组件注册-使用FactoryBean注册组件
创建一个实现了FactoryBean<T>接口的类
public class ColorFactoryBean implements FactoryBean<Color> { public Color getObject() throws Exception { System.out.println("调用了getObject方法"); return new Color(); } public Class<?> getObjectType() { return Color.class; } public boolean isSingleton() { return true; } }
配置类中通过@Bean注册这个实现类
@Bean public ColorFactoryBean colorFactoryBean() { return new ColorFactoryBean(); }
@Test public void test04() { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfig2.class); getDefinitionName(context); Object bean = context.getBean("colorFactoryBean"); Object bean1 = context.getBean("colorFactoryBean"); System.out.println("bean的类型 " + bean.getClass()); }
colorFactoryBean 调用了getObject方法 bean的类型 class com.yyc.bean.Color
因为isSingleton()方法返回的是true,所以getObject()创建出来的bean是单实例的;虽然注册到容器中的是colorFactoryBean,但是取出来的事泛型color。如果真的需要取出colorFactoryBean,则id应为&colorFactoryBean。
posted on 2019-05-23 20:24 星辰钟塔的玛利亚女士 阅读(123) 评论(0) 编辑 收藏 举报