Spring配置文件中Bean标签的信息的重用、依赖、作用域、工厂的实例、FactoryBean介绍

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>
  1. Bean的依赖(bean的创建顺序):默认情况下配置文件bean标签额度位置决定bean的创建顺序 可以使用depends-on属性改变bean的创建顺序
  2. Bean标签的作用域:
    scope属性决定bean的作用域可取值
    propotype:多实例
    1、容器启动不会去创建多实例bean,只有在获取的时候再创建bean
    2、每次获取都会创建一个新的bean
    singletion:单实例
    1、在容器启动完成之前就已经创建好了对象并保存在容器
    2、任何时候获取都是之前创建好的对象
    request:在web环境下,同一次请求创建一个Bean实例
    session:在wab环境下。同一次会话创建已和Bean实例
  3. 工厂模式:工厂帮助我们创建对象;一个专门创建对象的类工厂
    静态工厂:工厂本身不用创建对象,通过静态方法调用`
静态工厂:工厂本身不用创建对象,通过静态方法调用`
对象=工厂类.工厂方法名()
<!-- 1、静态工厂(不需要创建工厂本身)
        calss:指定静态工厂全类名
        factory-method:指定工厂方法
        constructor-arg:可以为方法传参数
     -->
    <bean id="airPlane02"  class="com.tjcu.factory.AirPlaneStaticFactory"
    factory-method="getAirPlane">
        <!-- 为方法指定参数 -->
        <constructor-arg value="李四"></constructor-arg>
    </bean>
    

动态工厂:需要创建对象
工厂类 工厂对象=new 工厂类();
工厂对象。工厂方法
<!-- 2、实例工厂使用
        1、先创建出实例工厂对象
        2、配置我们要创建的AirPlane使用那个工厂实例
            1、factory-bean:指定使用哪个工厂
            2、factory-method:指定使用哪个工厂方法
            constructor-arg:为工厂方法串参数
         -->
    <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> {

	/**
	 * Sping会自动调用
	 * 		返回创建的对象
	 */
		
	@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() {
		// TODO Auto-generated method stub
		return null;
	}

		/**
		 * 判断对象是单实例吗
		 * 	true:是单例
		 * false:不是单例
		 */
	@Override
	public boolean isSingleton() {
		// TODO Auto-generated method stub
		return false;
	}

}

Spring的配置信息

 <bean id ="myFactoryBeanImple"  class="com.tjcu.factory.MyFactoryBeanImple"></bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值