最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring詳細講解FactoryBean接口的使用

 更新時間:2022年06月09日 09:29:43   作者:望天邊星宿  
這篇文章主要為大家介紹了Spring容器FactoryBean工廠實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

FactoryBean是一個接口,創(chuàng)建對象的過程使用了工廠模式。

一、基本使用

讓Spring容器通過FactoryBean來實現對象的創(chuàng)建。

?? 創(chuàng)建FactoryBean案例

public class SimpleFactoryBean implements FactoryBean<Cat> {
    @Override
    public Cat getObject() throws Exception {
        // 創(chuàng)建Cat對象并且返回
        return new Cat("Tom");
    }
    @Override
    public Class<?> getObjectType() {
        return Cat.class;
    }
}

其實這里就相當于在配置文件里創(chuàng)建了一個bean標簽。

<bean class="com.text.registrar.SimpleFactoryBean" id="cat"></bean>

?? 需要加載的類

public class Cat {
    String name;
    public Cat(String name) {
        this.name = name;
    }
}

?? 啟動類里面創(chuàng)建方法加載Bean

@SpringBootApplication
public class SpringbootApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(SpringbootApplication.class, args);
    }
    // 等價于配置文件配置
    @Bean
    public SimpleFactoryBean catFactoryBean() {
        return new SimpleFactoryBean();
    }
}

二、高級使用

讓Spring容器通過FactoryBean創(chuàng)建指定接口的動態(tài)代理對象。

創(chuàng)建FactoryBean,可以生成任意接口的動態(tài)代理對象

?? 創(chuàng)建一個接口

public interface MyUserMapper {
    void select();
}

?? 創(chuàng)建一個FactoryBean實現類

可以通過傳入接口的全類名,創(chuàng)建動態(tài)代理對象。

public class MapperFactoryBean implements FactoryBean {
    /**
     * 用于保存接口的全類名
     */
    private String className;
    public MapperFactoryBean(String className) {
        this.className = className;
    }
    @Override
    public Object getObject() throws Exception {
        Class<?> interfaceClass = Class.forName(className);
        // 生成動態(tài)代理對象返回
        Object proxyInstance = Proxy.newProxyInstance(MapperFactoryBean.class.getClassLoader(), new Class[]{interfaceClass}, new InvocationHandler() {
            @Override
            public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
                // 獲取當前方法名
                System.out.println(method.getName());
                if ("select".equals((method.getName()))) {
                    System.out.println(className + "動態(tài)代理對象的select方法被執(zhí)行了?。?);
                }
                return null;
            }
        });
        return proxyInstance;
    }
    @Override
    public Class<?> getObjectType() {
        try {
            Class<?> interfaceCLass = Class.forName(className);
            return interfaceCLass;
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
}

?? 啟動類里面創(chuàng)建方法加載Bean

@SpringBootApplication
public class SpringbootApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(SpringbootApplication.class, args);
        run.getBean(MyUserMapper.class);
    }
    // 等價于配置文件配置
    @Bean
    public MapperFactoryBean mapperFactoryBean() {
        return new MapperFactoryBean("com.test.registrar.MyUserMapper");
    }
}

到此這篇關于Spring詳細講解FactoryBean接口的使用的文章就介紹到這了,更多相關Spring FactoryBean內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Feign使用@PathVariable方式

    Feign使用@PathVariable方式

    Feign使用@PathVariable注解在URL中插入變量,類似于SpringMVC的用法,通過示例展示了如何使用該注解,并在實際調用中替換占位符
    2024-11-11
  • Java 線程同步詳解

    Java 線程同步詳解

    這篇文章主要給大家詳細介紹的是Java 線程同步的相關問題及代碼示例,有需要的小伙伴可以參考下
    2016-03-03
  • Java對象不使用時賦值null的意義詳解

    Java對象不使用時賦值null的意義詳解

    這篇文章主要介紹了java對象不再使用時賦值null的意義,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • 詳解SpringBoot Mybatis如何對接多數據源

    詳解SpringBoot Mybatis如何對接多數據源

    這篇文章主要為大家介紹了SpringBoot Mybatis如何對接多數據源實現方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • java日期工具類實例分享

    java日期工具類實例分享

    本文介紹一個java日期工具類,功能有英文簡寫、英文全稱、精確到毫秒的完整時間、中文簡寫、中文全稱等方法
    2014-01-01
  • 詳解Java類動態(tài)加載和熱替換

    詳解Java類動態(tài)加載和熱替換

    本文主要介紹類加載器、自定義類加載器及類的加載和卸載等內容,并舉例介紹了Java類的熱替換。
    2021-05-05
  • Mybatis動態(tài)SQL foreach標簽用法實例

    Mybatis動態(tài)SQL foreach標簽用法實例

    這篇文章主要介紹了Mybatis動態(tài)SQL foreach標簽用法實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 詳解關于SpringBoot的外部化配置使用記錄

    詳解關于SpringBoot的外部化配置使用記錄

    這篇文章主要介紹了詳解關于SpringBoot的外部化配置使用記錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • 基于Java利用static實現單例模式

    基于Java利用static實現單例模式

    這篇文章主要介紹了基于Java利用static實現單例模式,當在多個線程同時觸發(fā)類的初始化過程的時候static不會被多次執(zhí)行,下面我們一起進入文章看看具體要的原因
    2022-01-01
  • java線程之用Thread類創(chuàng)建線程的方法

    java線程之用Thread類創(chuàng)建線程的方法

    本篇文章介紹了,Thread類創(chuàng)建線程的方法。需要的朋友參考下
    2013-05-05

最新評論

乐都县| 阿克陶县| 瓮安县| 阳西县| 沁阳市| 涞水县| 福贡县| 湘乡市| 平定县| 县级市| 江源县| 罗甸县| 宁武县| 浑源县| 凤阳县| 平昌县| 金塔县| 河东区| 滁州市| 中江县| 庄河市| 景德镇市| 遵化市| 突泉县| 新邵县| 洛扎县| 盐津县| 夏邑县| 丰台区| 特克斯县| 鸡西市| 木里| 普格县| 沂南县| 东至县| 横山县| 沅江市| 建昌县| 习水县| 莆田市| 德令哈市|