Spring的相关配置Bean元素及scope属性、生命周期属性、Spring的分模块配置

时间:2022-04-24 19:05:16
  • Bean元素:使用bean元素描述需要spring容器管理的对象

                name属性:给被管理的对象起个名字,获得对象时根据该名称获得对象;

                 class属性:被管理对象的完整类名;

                id属性:与name一样但是id不可重复,且不能使用特殊字符。

               Spring的相关配置Bean元素及scope属性、生命周期属性、Spring的分模块配置

 bean元素的scope属性

  • singleton

           singleton(默认值):单例对象,被标识为单例的对象在spring容器中只会存在一个实例,单例对象在容器创建时就会创建。

 

           配置文件为:      

1 <bean name="user2"
2           class="test.test.UserFactory"
3           factory-method="createUser" scope="singleton"></bean>

            测试方法为 :  

 1 @org.junit.Test
 2     public void fun2() throws Exception {
 3 
 4         //1、创建容器对象,从类路径下去加载xml的配置文件
 5         ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
 6         //想容器要对象
 7         User u1=(User) ac.getBean("user2");
 8         User u2=(User) ac.getBean("user2");
 9         User u3=(User) ac.getBean("user2");
10         System.out.println(u1==u3);
11     }

       输出结果为true;

  • prototype

      多例原型,被标识为多例的对象,每次在获得对象时才会创建,并且每次创建时都是新的对象。同样是上面的测试方法,将bean的scope属性改为prototype之后,将会输出false.

  singleton和prototype是重点,会经常使用。

       在未来开发中,大多数情况下scope的属性配置取默认值即可,当sprig与struts2整合的时候,action要配置成prototype

  • request

    web环境下与request生命周期一致

  • session

           web环境下与session声明周期一致

 

Bean元素的生命周期属性

         init-method:可以配置一个方法作为生命周期初始化方法,spring会在对象创建之后立即调用

         destroy-method:也可以配置一个方法作为生命周期的销毁方法,spring容器在关闭并销毁所有容器中的对象之前调用

          

<bean name="user" class="entity.User" init-method="init" destroy-method="destroy"></bean>

实体类

 1 package entity;
 2 
 3 public class User {
 4     private String name;
 5     private Integer age;
 6 
 7     @Override
 8     public String toString() {
 9         return "User{" +
10                 "name='" + name + '\'' +
11                 ", age=" + age +
12                 '}';
13     }
14 
15     public String getName() {
16         return name;
17     }
18 
19     public void setName(String name) {
20         this.name = name;
21     }
22 
23     public Integer getAge() {
24         return age;
25     }
26 
27     public void setAge(Integer age) {
28         this.age = age;
29     }
30 
31     public void init(){
32         System.out.println("初始化方法");
33     }
34     public void destroy(){
35         System.out.println("销毁方法");
36     }
37 }

 Spring的分模块配置

在一个配置文件引入其他配置文件

<import resource="其他配置文件src之后的路径">