spring的FactoryBean接口设计

本文深入解析Spring框架中FactoryBean接口的作用及其实现原理,通过具体示例展示如何使用FactoryBean来替代传统XML配置,实现更灵活的bean实例化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接口

 	public interface FactoryBean<T> {    
  	     T getObject() throws Exception;  //返回bean  
   	     Class<?> getObjectType();        //返回bean类型
  	     boolean isSingleton();           //返回是否单例
	}

作用

  •  要实现注册的bean如果实现了FactoryBean接口,通过 getBean()方法返回的不是FactoryBean本身,而是FactoryBean#getObject()方法所返回的对象,相当于FactoryBean#getObject()代理了getBean()方法。  
  •  为什么要使用这个接口?就是为了不像传统xml配置<property>那样注入属性。

举例

      public   class  Car  {    
           private   int maxSpeed ;    
           private  String brand ;    
           private   double price ; 
      }
	public   class  CarFactoryBean  implements  FactoryBean<Car>  {    
	    private  String carInfo ;    
	    public  Car getObject ()   throws  Exception  {    
	        Car car =  new  Car () ;    
	        String []  infos =  carInfo .split ( "," ) ;    
	        car.setBrand ( infos [ 0 ]) ;    
	        car.setMaxSpeed ( Integer. valueOf ( infos [ 1 ])) ;    
	        car.setPrice ( Double. valueOf ( infos [ 2 ])) ;    
	        return  car;    
	    }    
	    public  Class<Car> getObjectType ()   {    
	        return  Car. class ;    
	    }    
	    public   boolean  isSingleton ()   {    
	        return   false ;    
	    }    
	    public  String getCarInfo ()   {    
	        return   this . carInfo ;    
	    }    
	    
	    // 接受逗号分割符设置属性信息    
	    public   void  setCarInfo ( String carInfo )   {    
	        this . carInfocarInfo  = carInfo;    
	    }    
	} 

配置

 <bean id="car" class="com.test.factorybean.CarFactoryBean" carInfo="超级跑车,400,2000000"/>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

良之才-小良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值