一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 通過工廠模式返回Spring Bean方法解析

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

2020-09-17 23:54賈樹丙 Java教程

這篇文章主要介紹了通過工廠模式返回Spring Bean方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

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

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

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

還有一種方法是巧妙的使用Map對象,工廠的一個優點就是可擴展,對于這種方式可以說是體現的淋漓盡致了,可以定義多個map,map里也可以擴充

假設現在有一個接口類:BingService

以及實現了這個接口的兩個實現類: OneBingServiceImpl,TwoBingServiceImpl

1、在工廠類里定義Map

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Map;
public class BingServiceFactory {
  //Map中的Value是 ServiceBean
  private Map<String, BingService> serviceMap;
  //返回對應的 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、是用注解方式,配置工廠,同時使用set 注入的方法,給用到工廠的bean來set一下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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 注入的方方式來獲取工廠(當然也可以使用Autowired 注解注入)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;
  }
}

這個工廠可以優化的,不要Factory 這個類,直接使用Map 就行

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/acm-bingzi/p/spring_factory.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美作爱福利免费观看视频 | 亚洲福利视频一区 | 国产高清在线观看 | 日本中文字幕一区二区有码在线 | 九九热在线免费观看 | 日本免费不卡在线一区二区三区 | 美女做又爽又黄又猛 | 青草热视频 | 99久久国产综合精品网成人影院 | 成人特级毛片69免费观看 | 性欧美xxxxx老太婆 | 久久艹影院 | 国产第一综合另类色区奇米 | 色狠狠成人综合网 | 五月色天在线视频综合观看 | 国产真实乱子伦xxxxchina | 色播艾小青国产专区在线播放 | 网www天堂资源在线 王淑兰与铁柱全文免费阅读 | 视频久久 | 色噜噜国产精品视频一区二区 | 色多多绿巨人视频 | 亚洲国产在线播放在线 | 成人国产第一区在线观看 | 亚洲日日做天天做日日谢 | 欧美高清一级 | 无耻三级在线观看 | 邪恶肉肉全彩色无遮琉璃神社 | 久久精品视频在线看 | 美女无内裤下部黄 | 小苹果日本在线观看 | 放荡警察巨r麻麻出轨小说 范冰冰特黄xx大片 饭冈加奈子在线播放观看 法国老妇性xx在线播放 | 91赵邦贺| 色综色天天综合网 | 色综合久久中文字幕网 | 精品欧美小视频在线观看 | 亚洲天堂激情 | 国产黄频在线观看高清免费 | 色呦呦在线免费观看 | 动漫美女被吸乳羞羞小说 | 91精品91| 久久久无码精品无码国产人妻丝瓜 |