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

深入理解java的spring-ioc的使用

 更新時間:2019年03月12日 15:31:35   作者:張占嶺(倉儲大叔,Lind)  
這篇文章主要介紹了java的spring-ioc的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

spring-ioc的使用

IOC容器在很多框架里都在使用,而在spring里它被應(yīng)用的最大廣泛,在框架層面上,很多功能都使用了ioc技術(shù),下面我們看一下ioc的使用方法。

  1. 把服務(wù)注冊到ioc容器
  2. 使用屬性注入反射對應(yīng)類型的實例
  3. 多態(tài)情況下,使用名稱反射類型的實例

把服務(wù)注冊到ioc容器

@Bean注冊組件
使用@Bean注解進(jìn)行類型的注冊,默認(rèn)你的ioc容器里類型為bean的返回值,名稱為bean所有的方法名,與你的包名稱沒有直接關(guān)系,如果你的接口有多種實現(xiàn),在注冊時可以使用@Bean("lind")這種方式來聲明。

@Component,@Configuration,Service,Repository注冊組件

這幾個注解都是在類上面聲明的,而@Bean是聲明在方法上的,這一點要注意,這幾個注解一般是指對一個接口的實現(xiàn),在實現(xiàn)類上加這些注解,例如,一個數(shù)據(jù)倉儲接口UserRepository,它可以有多種數(shù)據(jù)持久化的方式,如SqlUserRepositoryImpl和MongoUserRepositoryImpl,那么在注冊時你需要為他們起一個別名,如@Repository("Sql-UserRepositoryImpl) qlUserRepositoryImpl,默認(rèn)的名稱是類名,但注意類名首字母為小寫

public interface EmailLogService {
 void send(String email, String message);
}

@Component()
public class EmailLogServiceHttpImpl implements EmailLogService {
 private static final Logger logger = LoggerFactory.getLogger(EmailLogServiceHttpImpl.class);

 @Override
 public void send(String email, String message) {
 Assert.notNull(email, "email must not be null!");
 logger.info("send email:{},message:{}", email, message);
 }
}
@Component("email-socket")
public class EmailLogServiceSocketImpl implements EmailLogService {
 private static final Logger logger = LoggerFactory.getLogger(EmailLogServiceSocketImpl.class);

 @Override
 public void send(String email, String message) {
 Assert.notNull(email, "email must not be null!");
 logger.info("send email2:{},message:{}", email, message);
 }
}
// 看一下調(diào)用時的測試代碼
 @Resource(name = "email-socket")
 EmailLogService socketEmail;
 @Autowired
 @Qualifier( "emailLogServiceHttpImpl")
 EmailLogService httpEmail;

 @Test
 public void testIoc2() {
 socketEmail.send("ok", "ok");
 }


 @Test
 public void testIoc1() {
 httpEmail.send("ok", "ok");
 }

在程序中使用bean對象

1.使用Resource裝配bean對象
在通過別名調(diào)用bean時,你可以使用@Resource注解來裝配對象

2.使用@Autowired裝配bean對象
也可以使用 @Autowired
@Qualifier( "emailLogServiceHttpImpl")兩個注解去實現(xiàn)程序中的多態(tài)

使用場景

在我們有些相同行為而實現(xiàn)方式不同的場景中,如版本1接口與版本2接口,在get方法實現(xiàn)有所不同,而這
兩個版本都要同時保留,這時我們需要遵守開閉原則,擴(kuò)展一個新的接口,而在業(yè)務(wù)上對代碼進(jìn)行重構(gòu),
提取兩個版本相同的方法到基類,自己維護(hù)各自獨有的方法,在為它們的bean起個名字,在裝配時,通過
bean的名稱進(jìn)行裝配即可。

寫個偽代碼:

class Api_version1(){
@Autowired 
@Qualifier("print-version1")
PrintService printService;
}

class Api_version2(){
@Autowired 
@Qualifier("print-version2")
PrintService printService;
}

class BasePrintService{}

interface PrintService{}

@Service("print-version1")
class PrintServiceImplVersion1 extends BasePrintService implements PrintService{}

@Service("print-version2")
class PrintServiceImplVersion2 extends BasePrintService implements PrintService{}

以上所述是小編給大家介紹的java的spring-ioc的使用詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • SpringBoot項目鑒權(quán)的4種方式小結(jié)

    SpringBoot項目鑒權(quán)的4種方式小結(jié)

    本文主要介紹了SpringBoot項目鑒權(quán)的4種方式小結(jié),包括傳統(tǒng)AOP、攔截器、參數(shù)解析器和過濾器,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Spring Boot RabbitMQ 延遲消息實現(xiàn)完整版示例

    Spring Boot RabbitMQ 延遲消息實現(xiàn)完整版示例

    本篇文章主要介紹了Spring Boot RabbitMQ 延遲消息實現(xiàn)完整版示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • java多線程之線程,進(jìn)程和Synchronized概念初解

    java多線程之線程,進(jìn)程和Synchronized概念初解

    這篇文章主要介紹了java多線程之線程,進(jìn)程和Synchronized概念初解,涉及進(jìn)程與線程的簡單概念,實現(xiàn)多線程的方式,線程安全問題,synchronized修飾符等相關(guān)內(nèi)容,具有一定借鑒價值,需要的朋友可以參考下。
    2017-11-11
  • Spring核心容器之BeanDefinition解析

    Spring核心容器之BeanDefinition解析

    這篇文章主要介紹了Spring核心容器之BeanDefinition解析,Spring 將管理的對象稱之為 Bean,容器會先實例化 Bean,然后自動注入,實例化的過程就需要依賴 BeanDefinition,需要的朋友可以參考下
    2023-11-11
  • jpa實現(xiàn)多對多的屬性時查詢的兩種方法

    jpa實現(xiàn)多對多的屬性時查詢的兩種方法

    這篇文章主要介紹了jpa實現(xiàn)多對多的屬性時查詢的兩種方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java Swing JPanel面板的使用方法

    Java Swing JPanel面板的使用方法

    這篇文章主要介紹了Java Swing JPanel面板的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 關(guān)于Java for循環(huán)的正確用法介紹

    關(guān)于Java for循環(huán)的正確用法介紹

    Java里的循環(huán)結(jié)構(gòu)我們可以通過while、do-while、for、foreach等方式實現(xiàn)循環(huán),這篇文章會把這幾種循環(huán)方式都給大家講解到,但本文主要介紹for循環(huán)的使用,感興趣的同學(xué)可以參考閱讀
    2023-05-05
  • Java的布爾類型基本介紹

    Java的布爾類型基本介紹

    這篇文章主要介紹了Java的布爾類型,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • Spring?IOC中的組件掃描

    Spring?IOC中的組件掃描

    通過自動掃描,Spring?會自動從掃描指定的包及其子包下的所有類,并根據(jù)類上的特定注解將該類裝配到容器中,而無需在?XML?配置文件或?Java?配置類中逐一聲明每一個?Bean,這篇文章主要介紹了Spring?IOC中的組件掃描,需要的朋友可以參考下
    2022-05-05
  • java實現(xiàn)字符串like和not?like的使用示例

    java實現(xiàn)字符串like和not?like的使用示例

    在Java中,我們經(jīng)常需要對字符串進(jìn)行模式匹配操作,字符串的模式匹配通常使用like和not?like這兩個運算符進(jìn)行,本文就來介紹一下如何實現(xiàn),感興趣的可以了解一下
    2023-09-09

最新評論

兴山县| 大悟县| 石家庄市| 唐海县| 东乌| 毕节市| 定兴县| 墨竹工卡县| 鸡东县| 安徽省| 宁夏| 九龙城区| 金寨县| 大英县| 凤庆县| 乌拉特前旗| 醴陵市| 大邑县| 枣庄市| 诸暨市| 张北县| 木里| 天祝| 沂水县| 乐亭县| 富裕县| 中西区| 南木林县| 金秀| 清丰县| 双江| 特克斯县| 宝山区| 揭西县| 五大连池市| 措勤县| 和田市| 隆德县| 德钦县| 怀远县| 马公市|