Spring-Bean管理
2019-02-14 本文已影响11人
往事随风_0817
Spring-Bean管理
介绍
ApplicationContext和BeanFactory区别
- applicationContext和BeanFactory都是Spring工厂类
- applicationContext是BeanFactory一个子接口,applicationContext增强了BeanFactory功能,有国际化等
- 两者生成Bean的时机不同
BeanFactory完成工厂实例化之后,通过getBean方法来创建某个Bean的实例对象,而applicationContext是一加载配置文件,将配置文件中所有单例模式生成的类全部给实例化
FileSystemXmlApplicationContext:从系统某个磁盘位置加载配置文件
ClassPathXmlApplicationContext:从类路径加载配置文件
Bean实例化的三种方式
1. 通过无参构造器创建Bean
/**
* Bean的实例化的三种方式:采用无参数的构造方法的方式
*/
public class Bean1 {
public Bean1(){
System.out.println("Bean1被实例化了...");
}
}
//XML
<!--第一种:无参构造器的方式-->
<bean id="bean1" class="com.akwangl.demo.Bean1"/>
2.通过静态工厂方式
/**
* Bean的实例化三种方式:静态工厂实例化方式
*/
public class Bean2 {
}
/**
* Bean2的静态工厂
*/
public class Bean2Factory {
public static Bean2 createBean2(){
System.out.println("Bean2Factory的方法已经执行了...");
return new Bean2();
}
}
//XML
<!--第二种:静态工厂的方式-->
<bean id="bean2" class="com.akwangl.demo.Bean2Factory" factory-method="createBean2"/>
3.通过实例工厂方式
/**
* Bean的实例化三种方式:实例工厂实例化
*/
public class Bean3 {
}
/**
* Bean3的实例工厂
*/
public class Bean3Factory {
public Bean3 createBean3(){
System.out.println("Bean3Factory执行了...");
return new Bean3();
}
}
//XML
<!--第三种:实例工厂的方式-->
<bean id="bean3Factory" class="com.imooc.ioc.demo2.Bean3Factory"/>
<bean id="bean3" factory-bean="bean3Factory" factory-method="createBean3"/>
通常无参构造器的方式使用较为广泛,如果实例化复杂关系的Bean可以选择第二种或者第三种
注意:如果使用applicationContext工厂,一旦加载配置文件,会将配置文件中的所有单例模式的Bean全部给实例化了
Bean的配置
id和name的区别
-
本质上效果一样,在IOC容器中id必须是唯一的,而name是可以多个相同的(但最好还是写成唯一的)
-
id不允许编写特殊字符,而name可以编写特殊字符
class
class属性用于代表一个类的完全限定名,主要作用是让IOC容器生成类的实例
Bean的作用域
-
singleton:singleton代表单例,Spring默认使用单例来创建Bean
-
prototype:每次Spring都会创建一个新的Bean
-
request:每次HTTP请求都会创建一个新的Bean
-
session:同一个HTTP Session共享一个Bean,不同的HTTP Session使用不同的Bean
Spring容器中Bean的生命周期
Spring初始化bean或销毁bean时,有时候需要做一些事情,因此Spring可以在创建和销毁bean的时候调用bean的两个生命周期方法
<bean id="xxx" class="...bean完全限定名" init-method="init" destory-method="destroy"/>
-
当bean被载入到容器的时候会调用当前bean下的init方法
-
当bean从容器中销毁的时候会调用destroy方法("scope=singleton"才有效)
Spring-Bean的完整生命周期有11个步骤,可自行百度阅读