Spring框架学习[基础知识](一)

2014-11-24 03:11:25 · 作者: · 浏览: 0

1.在java开发领域,Spring相对于EJB来说是一种轻量级的,非侵入性的Java开发框架,曾经有两本很畅销的书《Expert one-on-one J2EE Design and Development》和《Expert one-on-one J2EEdevelopment without EJB》是java高手进阶必看的宝典,Spring就是从这两本书的理论发展起来的。

Spring主要核心是:

(1).控制反转(IOC):以前传统的java开发模式中,当需要一个对象时我们,我们会自己使用new或者getInstance等直接或者间接调用构造方法创建一个对象,而在Spring开发模式中,Spring容器使用了工厂模式为我们创建了所需要的对象,我们使用时不需要自己去创建,直接调用Spring为我们提供的对象即可,这就是控制反转的思想。实例化一个java对象有三种方式:使用类构造器,使用静态工厂方法,使用实例工厂方法,当使用spring时我们就不需要关心通过何种方式实例化一个对象,spring通过控制反转机制自动为我们实例化一个对象。

(2).依赖注入(DI):Spring使用java Bean对象的Set方法或者带参数的构造方法为我们在创建所需对象时将其属性自动设置所需要的值的过程就是依赖注入的基本思想。

(3).面向切面编程(AOP):在面向对象编程(OOP)思想中,我们将事物纵向抽象成一个个的对象。而在面向切面编程中,我们将一个个对象某些类似的方面横向抽象成一个切面,对这个切面进行一些如权限验证,事物管理,记录日志等公用操作处理的过程就是面向切面编程的思想。

2.在Spring中,所有管理的对象都是JavaBean对象,而BeanFactory和ApplicationContext就是spring框架的两个IOC容器,现在一般使用ApplicationnContext,其不但包含了BeanFactory的作用,同时还进行更多的扩展。

实例化Spring IOC容器的简单方法:

(1).方法1:

  1. //如果只有一个spring配置文件也可以直接传递一个string参数,不需要使用数组 ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{“spring配置文件路径”});

    (2).方法2:

    1. Resource res = new FileSystemResource(“spring配置文件”); BeanFactory factory = new XMLBeanFactory(res);

      2. Spring多个配置文件组合方法:

      很多时候,由于Spring需要管理和配置的东西比较多,如果都放在一个配置文件中,配置文件会变的比较大,同时不方便与维护,一般好的做法是按照功能模块将Spring配置文件分开,例如:DAO层配置到一个spring-dao.xml配置文件中,Service层配置到spring-service.xml文件中,Struts的action配置到spring-action.xml文件中,然后通过下面两种办法将这些分散的配置文件组合起来:

      (1).方法1:在一个作为Spring总配置文件中的 元素定义之前,通过 元素将要引入的spring其他配置文件引入,例如:

      1. ……
      2. ……
      3. (2).方法2:

        a.对于JavaSE的工程,当使用下面方法获取ApplicationContext对象时将所有的spring配置文件通过数组传递进去,也可以使用通配符如spring-*.xml方式。

        1. ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{“spring配置文件路径”});

          b.对于JavaEE工程,在web.xml文件中指定spring配置文件时可以指定多个,中间有逗号“,”分隔,也可以使用通配符方式。

          3. spring配置文件bean的配置规则:

          (1).一个Bean可以通过一个id属性惟一指定和引用,如果spring配置文件中有两个以上相同的id时,spring会报错id冲突。

          (2).一个Bean也可以通过一个name属性来引用和指定,如果spring配置文件中有两个以上相同name的Bean,则spring通过name引用时,运行时后面的会自动覆盖前面相同name的bean引用,而不会报错。

          4.spring依赖注入3种方式:

          对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象的过程,spring的依赖注入有3种方式:

          (1).使用构造器注入:

          1. 构造函数需要的参数1
          2. 构造函数需要的参数2 ……
          3. 使用构造器注入方式时:spring在实例化该Bean时会调用配置参数符合的构造方法。

            (2).使用属性的setter注入:

            1. ……
            2. 使用属性的setter注入方式时,所注入的属性必须提供setter和getter方法,spring在实例化时会自动调用无参数的构造方法或者静态工厂方法,实例化之后自动调用属性的set方法将值设置进去。

              (3).使用Field字段注入方式,该方式是spring2.5以后提供的基于java 注解(annotation)方式的注入,就是在java中的字段上或者setter方法上通过使用注解方式进行spring的依赖注入。

              例如:

              a.字段注入:

              1. @Resource private UserDao dao;

                b. 属性注入:

                1. @Resource public void setUserDao(UserDao dao){
                2. this.dao = dao; }

                  5.spring通过注入方式注入依赖bean的方法:

                  Spring中为一个bean注入其依赖的另一个bean时,通过使用ref来注入另一个bean,简单例子如下:

                  如果bean2中通过bean1属性引用了bean1则通过下面方式注入:

                  1. ……
                  2. ……
                  3. 6.spring的集合注入:

                    当需要给Bean的集合引用注入值时,spring也提供了相应的方法:

                    (1).Set集合注入:

                    1. value1 value2
                    2. ……
                    3. (2).List集合注入:

                      1. value1 value2
                      2. ……
                      3. (3).Map集合注入:

                        1. ……
                        2. (4).Properties注入:

                          1. value1 value2
                          2. ……
                          3. 注意:Spring会自动将其数据类型转换,支持泛型。
                            8. Java注解(Annotation)简单介绍:

                            Java注解(Annotation)是通过在java源文件上添加标记字段,然后通过反射的反射在编译或者运行时获取这些标记字段以及其标记目标,然后进行相应处理的方法,曾经风靡一时的XDoclet就是最早的java注解的工作原理说明。使用注解可以进行某些配置,大大减少xml配置文件的书写麻烦,但是也有人认为注解方式不方便理解和维护,因此对于注解VS XML配置文件一直争论不