Bean元素
Bean元素进阶
scope属性:
1.singleton(默认值):单例对象.被标识为单例的对象在spring容器中只会存在一个实例
2.prototype:多例原型.被标识为多例的对象,每次再获得才会创建.每次创建都是新的对象.整合struts2时,ActionBean必须配置为多例的.
3.request:web环境下.对象与request生命周期一致.
4, session:web环境下,对象与session生命周期一致.
生命周期属性
1.配置一个方法作为生命周期初始化方法.spring会在对象创建之后立即调用. init-method
2.配置一个方法作为生命周期的销毁方法.spring容器在关闭并销毁所有容器中的对象之前调用. destory-method(单例对象可以销毁,多例对象不会被销毁)
spring创建对象方式
1.空参构造方式
2.静态工厂(了解)
spring的分模块配置
练习代码:
xml
<bean name="user" class="com.spring.bean.User" scope="singleton" init-method="init" destroy-method="destroy"></bean>
User类
package com.spring.bean;public class User {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void init(){System.out.println("初始化");}public void destroy(){System.out.println("銷毀");}
}
Test类
package com.test;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.spring.bean.User;public class TestDemo {private ClassPathXmlApplicationContext context;@Testpublic void testDemo() throws InterruptedException{context = new ClassPathXmlApplicationContext("applicationContext.xml");/*scope=prototype的javaBean在创建容器时候不会被创建*/User bean = (User)context.getBean("user");//User bean1 = (User) context.getBean("user");//System.out.println(bean==bean1);bean.setName("DreamZuora");bean.setAge(18);System.out.println(bean);/*单例对象可以销毁,多例对象不会被销毁*/context.close();}}