Spring的FactoryBean<Object>接口示例代码
作者:路西法98
FactoryBean是Spring框架中的一个接口,用于创建和管理Bean对象,它的作用是将Bean的创建过程交给FactoryBean实现类来完成,而不是直接由Spring容器来创建,本文给大家介绍Spring的FactoryBean<Object>接口,感兴趣的朋友一起看看吧
FactoryBean接口
FactoryBean是Spring框架中的一个接口,用于创建和管理Bean对象。它的作用是将Bean的创建过程交给FactoryBean实现类来完成,而不是直接由Spring容器来创建。
实现FactoryBean接口的类必须实现getObject()方法,该方法返回的是实际的Bean对象。另外,还可以实现getObjectType()方法,该方法返回的是实际的Bean类型。
下面是一个完整的示例代码:
MyBean.java
public class MyBean { private String name; public MyBean(String name) { this.name = name; } public String getName() { return name; } }
MyBeanFactory.java
public class MyBeanFactory implements FactoryBean<MyBean> { private String name; public MyBeanFactory(String name) { this.name = name; } @Override public MyBean getObject() throws Exception { return new MyBean(name); } @Override public Class<?> getObjectType() { return MyBean.class; } @Override public boolean isSingleton() { return true; } }
Main.java
@SpringBootApplication public class Main implements CommandLineRunner { @Autowired private ApplicationContext context; public static void main(String[] args) { SpringApplication.run(Main.class, args); } @Override public void run(String... args) throws Exception { MyBean myBean1 = (MyBean) context.getBean("myBean1"); MyBean myBean2 = (MyBean) context.getBean("myBean2"); System.out.println(myBean1.getName()); // 输出:myBean1 System.out.println(myBean2.getName()); // 输出:myBean2 } @Bean public MyBeanFactory myBean1() { return new MyBeanFactory("myBean1"); } @Bean public MyBeanFactory myBean2() { return new MyBeanFactory("myBean2"); } }
在这个示例中,我们定义了一个MyBean类,它有一个name属性。然后我们定义了一个MyBeanFactory类,它实现了FactoryBean接口,并在getObject()方法中返回了一个MyBean对象。在Main类中,我们通过@Bean注解定义了两个MyBeanFactory对象,并通过ApplicationContext获取了这两个对象的实例,最后输出了它们的name属性。
注意,我们在MyBeanFactory类中实现了isSingleton()方法并返回了true,表示该FactoryBean创建的Bean对象是单例的。如果返回false,则表示该FactoryBean创建的Bean对象是非单例的。
到此这篇关于Spring的FactoryBean<Object>接口的文章就介绍到这了,更多相关Spring FactoryBean接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!