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

通過工廠模式返回Spring Bean方法解析

 更新時(shí)間:2020年09月17日 11:46:13   作者:賈樹丙  
這篇文章主要介紹了通過工廠模式返回Spring Bean方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

工廠返回的可以是一個(gè)具體的對象,比如造一輛車,可以返回一個(gè)自行車對象,或者汽車對象。

但是在Spring 中需要工廠返回一個(gè)具體的Service,這就是一個(gè)抽象工廠了

一種方法是反射,個(gè)人覺得這種方式不好;

還有一種方法是巧妙的使用Map對象,工廠的一個(gè)優(yōu)點(diǎn)就是可擴(kuò)展,對于這種方式可以說是體現(xiàn)的淋漓盡致了,可以定義多個(gè)map,map里也可以擴(kuò)充

假設(shè)現(xiàn)在有一個(gè)接口類:BingService

以及實(shí)現(xiàn)了這個(gè)接口的兩個(gè)實(shí)現(xiàn)類: OneBingServiceImpl,TwoBingServiceImpl

1、在工廠類里定義Map

import java.util.Map;
public class BingServiceFactory {
  //Map中的Value是 ServiceBean
  private Map<String, BingService> serviceMap;
  //返回對應(yīng)的 Service
  public BingService getBingService(String platform) {
    return serviceMap.get(platform);
  }
  public Map<String, BingService> getServiceMap() {
    return serviceMap;
  }
  public void setServiceMap(Map<String, BingService> serviceMap) {
    this.serviceMap = serviceMap;
  }
}

2、是用注解方式,配置工廠,同時(shí)使用set 注入的方法,給用到工廠的bean來set一下

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

@Configuration
public class BingConfiguration {
  @Resource
  private OneServiceImpl oneService;

  @Resource
  private TwoServiceImpl twoService;

  @Resource
  private TestServiceImpl testService;

  @Bean
  public BingServiceFactory createFactory() {
    BingServiceFactory factory = new BingServiceFactory();

    Map<String, BingService> serviceMap = new HashMap<>();
    serviceMap.put("One",oneService);
    serviceMap.put("Two",twoService);
    factory.setServiceMap(serviceMap);
    testService.setFactory(factory);
    return factory;
  }
}

@Bean 注解如果無效的話,可能得 @Bean("xxxxServiceFactory") 這樣的

3、使用set 注入的方方式來獲取工廠(當(dāng)然也可以使用Autowired 注解注入)

import org.springframework.stereotype.Component;
@Component
public class TestServiceImpl {
  private BingServiceFactory factory;
  public void test() {
    BingService service = factory.getBingService("One");
  }
  public BingServiceFactory getFactory() {
    return factory;
  }
  public void setFactory(BingServiceFactory factory) {
    this.factory = factory;
  }
}

這個(gè)工廠可以優(yōu)化的,不要Factory 這個(gè)類,直接使用Map 就行

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java使用Preference類保存上一次記錄的方法

    Java使用Preference類保存上一次記錄的方法

    這篇文章主要介紹了Java使用Preference類保存上一次記錄的方法,較為詳細(xì)的分析了Preference類的使用技巧,需要的朋友可以參考下
    2015-05-05
  • Spring中IOC和AOP的核心組成架構(gòu)詳解

    Spring中IOC和AOP的核心組成架構(gòu)詳解

    這篇文章主要介紹了Spring中IOC和AOP的核心組成架構(gòu)詳解,本文是對Spring的2大核心功能——IoC和AOP 的總結(jié)提煉,并增加了環(huán)境profile和條件化bean的內(nèi)容,篇幅較短,更像是一個(gè)大綱,或者思維導(dǎo)圖,需要的朋友可以參考下
    2023-08-08
  • java 如何把byte轉(zhuǎn)化為KB、MB、GB的方法

    java 如何把byte轉(zhuǎn)化為KB、MB、GB的方法

    這篇文章主要介紹了java 如何把byte轉(zhuǎn)化為KB、MB、GB的方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • IDEA自定義pom依賴的步驟詳解

    IDEA自定義pom依賴的步驟詳解

    這篇文章主要介紹了IDEA自定義pom依賴的步驟詳解,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì)對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java基礎(chǔ)之關(guān)鍵字final詳解

    Java基礎(chǔ)之關(guān)鍵字final詳解

    這篇文章主要介紹了Java基礎(chǔ)之關(guān)鍵字final詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05
  • Java Stream流零基礎(chǔ)教程

    Java Stream流零基礎(chǔ)教程

    Java8的另一大亮點(diǎn)Stream,它與java.io包里的InputStream和OutputStream是完全不同的概念,下面這篇文章主要給大家介紹了關(guān)于Java8中Stream詳細(xì)使用方法的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 初步認(rèn)識(shí)JVM的體系結(jié)構(gòu)

    初步認(rèn)識(shí)JVM的體系結(jié)構(gòu)

    大家都知道,Java中JVM的重要性,學(xué)習(xí)了JVM你對Java的運(yùn)行機(jī)制、編譯過程和如何對Java程序進(jìn)行調(diào)優(yōu)相信都會(huì)有一個(gè)很好的認(rèn)知.在面試中JVM也是非常重要的一部分,比如JVM調(diào)優(yōu),JVM對象分配規(guī)則,內(nèi)存模型、方法區(qū),還有種要GC等,需要的朋友可以參考下
    2021-06-06
  • SpringBoot中MyBatis使用自定義TypeHandler的實(shí)現(xiàn)

    SpringBoot中MyBatis使用自定義TypeHandler的實(shí)現(xiàn)

    本文主要介紹了SpringBoot中MyBatis使用自定義TypeHandler,當(dāng)默認(rèn)的類型映射不能滿足需求時(shí),自定義?TypeHandler?就非常有用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • SpringBoot參數(shù)校驗(yàn)的最佳實(shí)戰(zhàn)教程

    SpringBoot參數(shù)校驗(yàn)的最佳實(shí)戰(zhàn)教程

    開發(fā)過程中,后臺(tái)的參數(shù)校驗(yàn)是必不可少的,下面這篇文章主要給大家介紹了關(guān)于SpringBoot參數(shù)校驗(yàn)的最佳實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • Spring Boot之過濾器 Filter注入的方式解析

    Spring Boot之過濾器 Filter注入的方式解析

    這篇文章主要介紹了Spring Boot之過濾器 Filter注入的方式解析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評論

三江| 甘谷县| 新河县| 耿马| 如皋市| 肇庆市| 安平县| 沭阳县| 慈溪市| 家居| 青铜峡市| 河津市| 额济纳旗| 攀枝花市| 定结县| 祁东县| 罗山县| 常熟市| 五峰| 通渭县| 盈江县| 盐津县| 宜昌市| 杨浦区| 楚雄市| 逊克县| 资阳市| 安泽县| 九江县| 阜平县| 锡林郭勒盟| 蓬溪县| 普兰店市| 大英县| 黄陵县| 祁阳县| 新田县| 思南县| 金川县| 济宁市| 柳州市|