Spring xml 配置


Spring 的开发步骤

1.导入 Spring 的 maven 坐标


        
            org.springframework
            spring-context
            5.0.5.RELEASE
        
        
            junit
            junit
            4.12
        

2.创建 Bean
3.创建 applicationContext.xml 配置文件
4.在配置文件中进行配置
5.创建 ApplicationContext 对象 getBean

Spring 配置文件要点

Bean 标签

Bean 标签用于在容器中创建标准 java 对象,Spring 默认情况下,创建对象时会调用无参构造,也可以通过配置,调用有参构造来创建对象。

  • 无参构造创建对象

        

  • 有参构造创建对象
    通过 constructor-arg 属性向有参构造中传入参数,可以传入引用,也可以传入普通值
    
       
        
    

scope 属性

scope 属性指对象的作用范围,取值如下:
1.singleton 默认值,单例的
2.prototype 多例的,从容器中getBean拿对象时,都会获取一个新的对象
3.request WEB项目中,Spring创建一个Bean的对象,将对象存入到request域中
4.session WEB项目中,Spring创建一个Bean的对象,将对象存入到session域中
5.global session WEB项目中,应用在Portlet环境,如果没有Portlet环境那么globalSession相当于session
注意:在 singleton 的作用域下,创建 spring 容器时,会创建 Bean;而在 prototype 的作用域下,会在调用 getBean 的时候创建Bean

Bean生命周期

  • init-method: 指定类中的初始化方法名称,初始化之后,就会调这里的方法
  • destroy-method:指定类中销毁方法名称,结束之前会调这里的方法

Bean 实例化

Bean 实例化的三种方式:

  1. 无参构造方法实例化(默认)
  2. 工厂静态方法实例化
  3. 工厂实例方法实例化

工厂静态方法实例化

配置工厂静态方法实例化,class 为工厂函数的全限定名,factory-method 为创建 userDao 对象的方法名

// xml 配置文件

// java 代码
public class StaticFactory {
    // 工厂静态方法,可以配置到spring配置文件中,让spring调用此方法进行初始化
    public static UserDao getUserDao() {
        return new UserDaoImpl();
    }
}

工厂实例化方法

工厂实例化方法是指的先创建工厂对象,然后通过工厂实例调用创建方法来创建对象进行返回

// xml 配置文件
 
   
   
   
// java 代码
// 工厂实例方法,可以配置到spring配置文件中,
    // 必须得先有DynamicFactory对象,再调用getUserDao创建对象,因为getUserDao不是静态方法,不能用类名直接调用
    public UserDao getUserDao() {
        return new UserDaoImpl();
    }

Bean 的依赖注入

依赖注入(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现。在编写程序时,通过控制反转,把对象的创建交给了 Spring,但是代码中不可能出现没有依赖的情况。 IOC 解耦只是降低他们的依赖关系,但不会消除。例如:业务层仍会调用持久层的方法,那这种业务层和持久层的依赖关系,在使用 Spring 之后,就让 Spring 来维护了。简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。

Bean 依赖注入方式

  • 构造方法
  • set 方法

set 方法注入

方式一
在 Service 内声明一个静态变量,创建一个set方法。配置 property 标签声明 name 和 ref,其中 name 为 set 方法名后面一截。



  


方式二
p 命名空间注入本质也是 set 方法注入,但比起上述的 set 方法注入更加便捷,主要体现在配置文件中,需要引入P命名空间,修改注入方式。


        

3.8 Bean的依赖注入的数据类型

依赖注入的数据可以是如下三种类型

  • 普通数据类型
  • 引用数据类型
  • 集合数据类型

先在 daoImpl 中声明私有变量,普通数据类型注入,通过 value 属性注入,集合通过相应的标签注入,具体参见代码:


    
        
            aaa
            bbb
            ccc
                  
        
    
    
        
            
            
        
    
    
        
            ppp1
            ppp2
            ppp3
        
    



    
    


    
    

引入其他配置文件(分模块开发)

实际开发中,Spring 的配置内容非常多,这就导致 Spring 配置很繁杂且体积很大,所以,可以将部分配置拆解到其他配置文件中,而在 Spring 主配置文件通过 import 标签进行加载。可以按照业务模块来拆解,一个服务一个 xml,或者一个模块一个 xml。