Spring的FactoryBean<Object>接口示例代码

 更新时间:2023年11月02日 10:49:00   作者:路西法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接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java List 用法实例详解

    Java List 用法实例详解

    这篇文章主要介绍了Java List 用法实例详解的相关资料,需要的朋友可以参考下
    2017-09-09
  • JUC之CountdownLatch使用详解

    JUC之CountdownLatch使用详解

    这篇文章主要介绍了JUC之CountdownLatch使用详解,CountdownLatch 用来进行线程同步协作,等待所有线程完成倒计时,
    其中构造参数用来初始化等待计数值,await() 用来等待计数归零,countDown() 用来让计数减一,需要的朋友可以参考下
    2023-12-12
  • SpringBoot+MyBatisPlus对Map中Date格式转换处理的方法详解

    SpringBoot+MyBatisPlus对Map中Date格式转换处理的方法详解

    在 SpringBoot 项目中, 如何统一 JSON 格式化中的日期格式。本文将为大家介绍一种方法:利用MyBatisPlus实现对Map中Date格式转换处理,需要的可以参考一下
    2022-10-10
  • spring cloud Gateway如何处理跨域问题

    spring cloud Gateway如何处理跨域问题

    这篇文章主要介绍了spring cloud Gateway如何处理跨域问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • Java设计模式的策略模式简析

    Java设计模式的策略模式简析

    这篇文章主要介绍了Java设计模式的策略模式简析,策略模式中定义了一系列的算法族,算法族指的是类似于一系列的行为、策略,策略模式将一系列的行为封装成类,既可以说是将每一种相类似的行为都封装成一个类,也有可能存在特殊的不进行封装的行为,需要的朋友可以参考下
    2023-12-12
  • ActiveMQ消息队列技术融合Spring过程解析

    ActiveMQ消息队列技术融合Spring过程解析

    这篇文章主要介绍了ActiveMQ消息队列技术融合Spring过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • ConditionalOnProperty注解的作用和使用方式

    ConditionalOnProperty注解的作用和使用方式

    在SpringBoot项目开发中,@ConditionalOnProperty注解允许根据配置文件中的属性值来控制配置类是否生效,该注解通过属性name和havingValue来判断配置是否注入,如果application.properties中的对应属性值为空或不匹配havingValue设定值
    2024-09-09
  • java 如何实现日志追踪MDC

    java 如何实现日志追踪MDC

    这篇文章主要介绍了java 实现日志追踪MDC方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • dubbo服务引用之创建Invoker流程详解

    dubbo服务引用之创建Invoker流程详解

    这篇文章主要为大家介绍了dubbo服务引用二之创建Invoker流程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 详解SpringBoot如何删除引用jar包中的无用bean

    详解SpringBoot如何删除引用jar包中的无用bean

    为了赶速度和直接将之前多模块的maven项目中的部分模块,直接以jar包的形式引入到新项目中了,虽然省去了不少开发时间,导致项目臃肿,启动很慢。本文将用@ComponentScan注解去实现让项目只加载自己需要的bean,需要的可以参考一下
    2022-06-06

最新评论