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

通過(guò)工廠模式返回Spring Bean方法解析

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

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

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

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

還有一種方法是巧妙的使用Map對(duì)象,工廠的一個(gè)優(yōu)點(diǎn)就是可擴(kuò)展,對(duì)于這種方式可以說(shuō)是體現(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;
  //返回對(duì)應(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來(lái)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 注解如果無(wú)效的話,可能得 @Bean("xxxxServiceFactory") 這樣的

3、使用set 注入的方方式來(lái)獲取工廠(當(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 就行

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(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)詳解,本文是對(duì)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à)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • IDEA自定義pom依賴的步驟詳解

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

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

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

    這篇文章主要介紹了Java基礎(chǔ)之關(guān)鍵字final詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(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你對(duì)Java的運(yùn)行機(jī)制、編譯過(guò)程和如何對(duì)Java程序進(jìn)行調(diào)優(yōu)相信都會(huì)有一個(gè)很好的認(rèn)知.在面試中JVM也是非常重要的一部分,比如JVM調(diào)優(yōu),JVM對(duì)象分配規(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)教程

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

    Spring Boot之過(guò)濾器 Filter注入的方式解析

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

最新評(píng)論

苍梧县| 盱眙县| 宜昌市| 三门县| 司法| 义马市| 临沂市| 兴义市| 阳西县| 东乡| 昆明市| 二连浩特市| 北安市| 琼结县| 石家庄市| 淮阳县| 延川县| 东明县| 邮箱| 高安市| 营山县| 乌兰县| 花莲县| 增城市| 邵阳市| 舒兰市| 黄大仙区| 定州市| 淮北市| 扎鲁特旗| 和平区| 廉江市| 木兰县| 甘孜| 深水埗区| 武陟县| 武山县| 凌海市| 虞城县| 资阳市| 蒲城县|