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接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot+MyBatisPlus对Map中Date格式转换处理的方法详解
在 SpringBoot 项目中, 如何统一 JSON 格式化中的日期格式。本文将为大家介绍一种方法:利用MyBatisPlus实现对Map中Date格式转换处理,需要的可以参考一下2022-10-10
ConditionalOnProperty注解的作用和使用方式
在SpringBoot项目开发中,@ConditionalOnProperty注解允许根据配置文件中的属性值来控制配置类是否生效,该注解通过属性name和havingValue来判断配置是否注入,如果application.properties中的对应属性值为空或不匹配havingValue设定值2024-09-09
详解SpringBoot如何删除引用jar包中的无用bean
为了赶速度和直接将之前多模块的maven项目中的部分模块,直接以jar包的形式引入到新项目中了,虽然省去了不少开发时间,导致项目臃肿,启动很慢。本文将用@ComponentScan注解去实现让项目只加载自己需要的bean,需要的可以参考一下2022-06-06


最新评论