spring-FactoryBean

FactoryBean,spring bean容器对bean的管理简单的说就是通过xml配置或者注解 将bean定义解析成Beandefine缓存起来,然后getBean的时候通过Beandefine实例化出所需的bean,但是如果遇到很复杂的bean的时候 xml配置或者注解就会显得有心无力了,spring-FactoryBean就是为了解决上述问题的,

FactoryBean用法很简单 只需要实现FactoryBean.java接口就可以了  接口提供三个方法

public interface FactoryBean<T> {

	/**
	 * 返回上述所说的复杂对象
	 */
	T getObject() throws Exception;

	/**
	 * 返回对象类型
	 */
	Class<?> getObjectType();

	/**
	 * 返回bean是否为单利模式,如果是单利模式则创建的对象会缓存到单利缓存池中
	 */
	boolean isSingleton();

}

eg:

public class Car {
}

/**
 * 通过实现factoryBean接口往容器中注册组件
 */
public class CarFactoryBean implements FactoryBean<Car> {

    @Override
    public Car getObject() throws Exception {

        return new Car();
    }

    @Override
    public Class<?> getObjectType() {
        return Car.class;
    }

    @Override
    public boolean isSingleton() {
        return false;
    }
}

@Configuration
public class MainConfig {

    @Bean
    public CarFactoryBean carFactoryBean() {
        return new CarFactoryBean();
    }
}

public class MainClass {

    public static void main(String[] args) throws Exception {
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MainConfig.class);
        //获取car对象
        Object bean = ctx.getBean("carFactoryBean");
        System.out.println(bean);

        //回去FactoryBean对象
        Object bean2 = ctx.getBean("&carFactoryBean");
        System.out.println(bean2);


    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值