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接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于ThreadLocal 的用法及内存泄露(内存溢出)

    基于ThreadLocal 的用法及内存泄露(内存溢出)

    这篇文章主要介绍了基于ThreadLocal 的用法及内存泄露(内存溢出),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java之单例模式实现方案详解

    Java之单例模式实现方案详解

    这篇文章主要介绍了Java之单例模式实现方案详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • maven打包所有依赖对外提供sdk.jar

    maven打包所有依赖对外提供sdk.jar

    这篇文章主要介绍了maven打包所有依赖,对外提供sdk.jar,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • 使用idea创建web框架和配置struts的方法详解

    使用idea创建web框架和配置struts的方法详解

    这篇文章主要介绍了使用idea创建web框架和配置struts的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java基础知识汇总

    Java基础知识汇总

    这篇文章对Java编程语言的基础知识作了一个较为全面的汇总,在这里给大家分享一下。需要的朋友可以参考。
    2017-09-09
  • Java中的自旋锁与适应性自旋锁的区别

    Java中的自旋锁与适应性自旋锁的区别

    这篇文章主要介绍了Java中的自旋锁与适应性自旋锁的区别,当一个线程尝试去获取某一把锁的时候,如果这个锁此时已经被别人获取(占用),那么此线程就无法获取到这把锁,该线程将会等待,间隔一段时间后会再次尝试获取,需要的朋友可以参考下
    2023-10-10
  • Spring Cloud Alibaba使用Nacos作为注册中心和配置中心

    Spring Cloud Alibaba使用Nacos作为注册中心和配置中心

    这篇文章主要为大家介绍了Spring Cloud Alibaba使用Nacos作为注册中心和配置中心的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Java计算两个程序运行时间的实例

    Java计算两个程序运行时间的实例

    下面小编就为大家带来一篇Java计算两个程序运行时间的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Java学习基础之安装JDK/配置JDK环境&IEDA工具安装

    Java学习基础之安装JDK/配置JDK环境&IEDA工具安装

    这篇文章主要介绍了Java学习基础系列文章的第一篇,主要内容是安装JDK/配置JDK环境&IEDA工具安装的相关资料,需要的朋友可以参考下
    2020-02-02
  • java实现手机短信验证的基本思路

    java实现手机短信验证的基本思路

    这篇文章主要为大家详细介绍了java实现手机短信验证的基本思路,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11

最新评论