亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring中@Autowired自動(dòng)注入map詳解

 更新時(shí)間:2023年10月20日 08:55:50   作者:架構(gòu)帥  
這篇文章主要介紹了Spring中@Autowired自動(dòng)注入map詳解,  spring是支持基于接口實(shí)現(xiàn)類的直接注入的,支持注入map,list等集合中,不用做其他的配置,直接注入,需要的朋友可以參考下

前言:

spring是支持基于接口實(shí)現(xiàn)類的直接注入的;

支持注入map,list等集合中,不用做其他的配置,直接注入;

為什么要用這種方式注入bean呢?

使用場(chǎng)景

適用于一個(gè)接口有多個(gè)實(shí)現(xiàn)類,然后根據(jù)不同的參數(shù)選擇執(zhí)行不同的實(shí)現(xiàn)類,

其實(shí)就是策略模式;

Spring 會(huì)在啟動(dòng)時(shí),自動(dòng)查找實(shí)現(xiàn)了該接口的 bean,放到這個(gè)Map中去。 key為bean的名字,value為 實(shí)現(xiàn)了該接口的所有的 bean。

注意:這里只有在map的key為string類型時(shí)才有效;

@Autowired 標(biāo)注作用于 Map 類型時(shí),如果 Map 的 key 為 String 類型,則 Spring 會(huì)將容器中所有類型符合 Map 的 value 對(duì)應(yīng)的類型的 Bean 增加進(jìn)來(lái),用 Bean 的 id 或 name 作為 Map 的 key。

代碼實(shí)現(xiàn)

首先定義一個(gè)的接口:

public interface KafkaStrategy {
 
    public void handler(McRequest mcRequest);
}

這個(gè)接口有多個(gè)實(shí)現(xiàn)類:

@Component("orderCancel")
@Slf4j
public class OrderCancelStrategy implements KafkaStrategy{
 
    @Autowired
    private BusinesService businesService;
 
    @Override
    public void handler(McRequest mcRequest) {
        // 執(zhí)行具體的業(yè)務(wù)
        businesService.orderCancel();
    }
}
 
@Component("orderRoolback")
@Slf4j
public class OrderRoolbackStrategy implements KafkaStrategy{
 
    @Autowired
    private BusinesService businesService;
 
    @Override
    public void handler(McRequest mcRequest) {
        // 執(zhí)行具體的業(yè)務(wù)
        businesService.orderRoolback();
    }
}
 
@Component("orderDelete")
@Slf4j
public class OrderDeleteStrategy implements KafkaStrategy{
 
    @Autowired
    private BusinesService businesService;
 
    @Override
    public void handler(McRequest mcRequest) {
        // 執(zhí)行具體的業(yè)務(wù)
        businesService.orderDelete();
    }
}

這里有三個(gè)實(shí)現(xiàn)類,都實(shí)現(xiàn)了KakfaStrategy接口;

將這三個(gè)實(shí)現(xiàn)類注入到sping容器中:

public class TestController{
    
    // 這塊其實(shí)已經(jīng)把KafkaStrategy接口的實(shí)現(xiàn)類注入到TestController了,可以調(diào)用了
    @Autowired
    private final Map<String, KafkaStrategy> strategyMap = Maps.newConcurrentMap();
 
    // 這個(gè)構(gòu)造方法的作用,其實(shí)不用也可以,為了防止重復(fù)注入,因此先清空,再注入
    public TestController(Map<String, KcStrategy> strategyMap) {
        this.strategyMap.clear();
        strategyMap.forEach(this.strategyMap::put);
    }
    
 
    public void test(){
        KafkaStrategy kafkaStrategy = strategyMap.get("orderDeleteStrategy");
        // 這樣就獲取到了對(duì)應(yīng)的實(shí)現(xiàn)類了,想獲取哪個(gè)都可以
    }
 
}

其實(shí)這種通過(guò)@Autowired注入map(接口有多個(gè)實(shí)現(xiàn)類),

這種方式多用于策略模式中。

除了可以注入到map中,也可以注入到list等其他集合中;

到此這篇關(guān)于Spring中@Autowired自動(dòng)注入map詳解的文章就介紹到這了,更多相關(guān)@Autowired自動(dòng)注入map內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot校驗(yàn)工具類詳細(xì)代碼示例

    Springboot校驗(yàn)工具類詳細(xì)代碼示例

    這篇文章主要給大家介紹了關(guān)于Springboot校驗(yàn)工具類的相關(guān)資料,工具類里面主要是封裝了一些常用字段驗(yàn)證方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • Springboot+Vue+shiro實(shí)現(xiàn)前后端分離、權(quán)限控制的示例代碼

    Springboot+Vue+shiro實(shí)現(xiàn)前后端分離、權(quán)限控制的示例代碼

    這篇文章主要介紹了Springboot+Vue+shiro實(shí)現(xiàn)前后端分離、權(quán)限控制的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • javaweb實(shí)現(xiàn)簡(jiǎn)易郵件發(fā)送

    javaweb實(shí)現(xiàn)簡(jiǎn)易郵件發(fā)送

    這篇文章主要為大家詳細(xì)介紹了javaweb實(shí)現(xiàn)簡(jiǎn)易郵件發(fā)送,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Springboot熱部署實(shí)現(xiàn)原理及實(shí)例詳解

    Springboot熱部署實(shí)現(xiàn)原理及實(shí)例詳解

    這篇文章主要介紹了Springboot熱部署實(shí)現(xiàn)原理及實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java 實(shí)現(xiàn)常見的非對(duì)稱加密算法

    Java 實(shí)現(xiàn)常見的非對(duì)稱加密算法

    這篇文章主要介紹了Java 實(shí)現(xiàn)常見的非對(duì)稱加密算法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • 使用JPA中@Query 注解實(shí)現(xiàn)update 操作方法(必看)

    使用JPA中@Query 注解實(shí)現(xiàn)update 操作方法(必看)

    下面小編就為大家?guī)?lái)一篇使用JPA中@Query 注解實(shí)現(xiàn)update 操作方法(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 詳解Guava Cache本地緩存在Spring Boot應(yīng)用中的實(shí)踐

    詳解Guava Cache本地緩存在Spring Boot應(yīng)用中的實(shí)踐

    Guava Cache是一個(gè)全內(nèi)存的本地緩存實(shí)現(xiàn),本文將講述如何將 Guava Cache緩存應(yīng)用到 Spring Boot應(yīng)用中。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 圖文詳解java內(nèi)存回收機(jī)制

    圖文詳解java內(nèi)存回收機(jī)制

    這篇文章主要以圖文結(jié)合的方式為大家詳細(xì)介紹了java內(nèi)存回收機(jī)制,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 深入理解java自旋鎖

    深入理解java自旋鎖

    這篇文章主要介紹了如何深入理解java自旋鎖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面和小編來(lái)一起學(xué)習(xí)下吧
    2019-05-05
  • Ubuntu 安裝 JDK8 的兩種方法(總結(jié))

    Ubuntu 安裝 JDK8 的兩種方法(總結(jié))

    下面小編就為大家?guī)?lái)一篇Ubuntu 安裝 JDK8 的兩種方法(總結(jié))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06

最新評(píng)論