③【Spring】整合第三框架的常用机制:FactoryBean

简介: ③【Spring】整合第三框架的常用机制:FactoryBean



一、什么是 FactoryBean ?


FactoryBean 是 Spring 提供的一种整合第三方框架的常用机制。

当获取普通的bean时,得到的是我们在bean标签中class属性所配置的类的对象;

当获取FactoryBean类型的bean,得到的是getObject()方法的返回值,这个返回值是可由开发者自定义的。

通过这种机制,Spring 可以帮我们把复杂组件创建的详细过程和繁琐细节都屏蔽起来,只把最简洁的使用界面展示给我们。





二、实现 FactoryBean 接口


  • 创建一个FactoryBean 的实现类,重写其抽象方法。
  • 实现FactoryBean接口时需要指定泛型
  • 泛型类型就是当前工厂要生产的对象的类型
package com.haojin.ioc.demo;
import org.springframework.beans.factory.FactoryBean;
/**
 * @author .29.
 * @create 2023-01-19 11:54
 */
//由FactoryBean的泛型决定bean获取到的对象
public class MyFactoryBean implements FactoryBean<service> {
    private String serviceName;
    public String getServiceName() {
        return serviceName;
    }
    public void setServiceName(String serviceName) {
        this.serviceName = serviceName;
    }
    @Override
    public service getObject() throws Exception {
        //这里模拟创建、设置一个对象的过程
        service service = new service();
        service.setServiceName(this.serviceName);
        return service;
    }
    @Override
    public Class<?> getObjectType() {
        //返回要生产的对象类型
        return service.class;
    }
}



XML配置文件中配置bean

class属性:com.haojin.ioc.demo.MyFactoryBean
<bean id="myFactoryBean" class="com.haojin.ioc.demo.MyFactoryBean">
        <!--依旧可以通过setXxx()方式注入属性值-->
        <property name="serviceName" value=".29."></property>
    </bean>



测试FactoryBean效果

getBean()获取的类型并非:MyFactoryBean,而是FactoryBean接口泛型类型:service
public class testFactoryBean {
    @Test
    public void test(){
        //class属性设置的是:MyFactoryBean,这里bean获取到的是service
        ApplicationContext factorybean =
                new ClassPathXmlApplicationContext("factorybean.xml");
        service myFactoryBean = factorybean.getBean("myFactoryBean", service.class);
        System.out.println(myFactoryBean);
        System.out.println(myFactoryBean.getServiceName());
    }
}




目录
相关文章
|
17天前
|
存储 安全 Java
事件的力量:探索Spring框架中的事件处理机制
事件的力量:探索Spring框架中的事件处理机制
28 0
|
26天前
|
缓存 Java Spring
Spring 框架中 Bean 的生命周期
Spring 框架中 Bean 的生命周期
33 1
|
1月前
|
开发框架 安全 Java
Spring 框架:企业级应用开发的强大工具
在当今数字化时代,企业级应用开发的需求日益增长。为了满足这一需求,开发者们需要一款功能强大、易于使用的开发框架。Spring 框架作为 Java 领域的领先者,为企业级应用开发提供了全面的解决方案。本文将深入探讨 Spring 框架的各个方面,包括其历史、核心模块、优势以及应用场景。
24 0
|
1天前
|
Java Spring
Spring Boot脚手架集成校验框架
Spring Boot脚手架集成校验框架
6 0
|
4天前
|
安全 Java 数据库连接
[AIGC] Spring框架的基本概念和优势
[AIGC] Spring框架的基本概念和优势
|
4天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
4天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
|
9天前
|
存储 安全 Java
第3章 Spring Security 的用户认证机制(2024 最新版)(下)
第3章 Spring Security 的用户认证机制(2024 最新版)
33 0
|
25天前
|
开发框架 安全 Java
探索 Spring 框架:企业级应用开发的强大工具
探索 Spring 框架:企业级应用开发的强大工具
19 1
|
1月前
|
存储 安全 Java
全面探索Spring框架中的事件处理机制
在现代应用程序中,各个组件之间的通信是至关重要的。想象一下,你的应用程序中的各个模块像是一个巨大的交响乐团,每个模块都是一位音乐家,而Spring事件机制就像是指挥家,将所有音乐家协调得天衣无缝。这种松耦合的通信方式使你的应用程序更加灵活、可维护,而且能够轻松应对变化。现在,让我们进入这个令人兴奋的音乐厅,探索Spring事件的世界。