Spring配置文件中Bean标签的信息的重用、依赖、作用域、工厂的实例、FactoryBean介绍
- 通过继承来实现Bean<配置信息只针对配置信息有继承关系)>的重用
添加属性即可parent=”需要继承复用的信息“
如果bean标签添加了属性abstract=“true”,表名这个bean只能其他bean继承,不能被实现
<bean id="person05" class="com.tjcu.bean.Person" abstract="true">
<property name="lastName" value="张三"></property>
<property name="age" value="18"></property>
</bean>
<bean id="person06" class="com.tjcu.bean.Person" parent="person05">
<property name="lastName" value="李四"></property>
</bean>
- Bean的依赖(bean的创建顺序):默认情况下配置文件bean标签额度位置决定bean的创建顺序 可以使用depends-on属性改变bean的创建顺序
- Bean标签的作用域:
scope属性决定bean的作用域可取值
propotype:多实例
1、容器启动不会去创建多实例bean,只有在获取的时候再创建bean
2、每次获取都会创建一个新的bean
singletion:单实例
1、在容器启动完成之前就已经创建好了对象并保存在容器
2、任何时候获取都是之前创建好的对象
request:在web环境下,同一次请求创建一个Bean实例
session:在wab环境下。同一次会话创建已和Bean实例 - 工厂模式:工厂帮助我们创建对象;一个专门创建对象的类工厂
静态工厂:工厂本身不用创建对象,通过静态方法调用`
静态工厂:工厂本身不用创建对象,通过静态方法调用`
对象=工厂类.工厂方法名()
<bean id="airPlane02" class="com.tjcu.factory.AirPlaneStaticFactory"
factory-method="getAirPlane">
<constructor-arg value="李四"></constructor-arg>
</bean>
动态工厂:需要创建对象
工厂类 工厂对象=new 工厂类();
工厂对象。工厂方法
<bean id="airPlaneInstanceFactory" class="com.tjcu.factory.AirPlaneInstanceFactory" ></bean>
<bean id="airPlane03" class="com.tjcu.bean.AirPlane"
factory-bean="airPlaneInstanceFactory" factory-method="getAirPlane">
<constructor-arg value="傻屌"></constructor-arg>
</bean>
- FactoryBean(Sprimg规定的一个接口);只要是这个接口的实现类,Spring都认为是一个工厂
1、ioc容器启动的时候不会创建实例
2、FactoryBean获取的时候才会创建实例
通过实现FactoryBean结构来创建工厂
public class MyFactoryBeanImple implements FactoryBean<Book> {
@Override
public Book getObject() throws Exception {
System.out.println("MyFactoryBeanImple帮我们创建了Book对象");
Book book = new Book();
book.setBookNaem(UUID.randomUUID().toString());
return null;
}
@Override
public Class<?> getObjectType() {
return null;
}
@Override
public boolean isSingleton() {
return false;
}
}
Spring的配置信息
<bean id ="myFactoryBeanImple" class="com.tjcu.factory.MyFactoryBeanImple"></bean>