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

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

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

spring-ioc的使用

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

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

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

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

@Component,@Configuration,Service,Repository注冊(cè)組件

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

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)用時(shí)的測(cè)試代碼
 @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對(duì)象

1.使用Resource裝配bean對(duì)象
在通過(guò)別名調(diào)用bean時(shí),你可以使用@Resource注解來(lái)裝配對(duì)象

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

使用場(chǎng)景

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

寫(xiě)個(gè)偽代碼:

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的使用詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • sharding-jdbc實(shí)現(xiàn)分頁(yè)查詢(xún)的示例代碼

    sharding-jdbc實(shí)現(xiàn)分頁(yè)查詢(xún)的示例代碼

    sharding-jdbc是一個(gè)輕量級(jí)Java框架,它提供了分布式數(shù)據(jù)庫(kù)中間件的功能,支持水平分表和分庫(kù)分表,在分頁(yè)查詢(xún)方面,sharding-jdbc支持兩種方式:基于物理分頁(yè)和基于邏輯分頁(yè),本文給大家介紹sharding-jdbc如何實(shí)現(xiàn)分頁(yè)查詢(xún),需要的朋友可以參考下
    2024-05-05
  • Java實(shí)現(xiàn)JDBC連接數(shù)據(jù)庫(kù)簡(jiǎn)單案例

    Java實(shí)現(xiàn)JDBC連接數(shù)據(jù)庫(kù)簡(jiǎn)單案例

    這篇文章主要介紹了Java實(shí)現(xiàn)JDBC連接數(shù)據(jù)庫(kù)簡(jiǎn)單案例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • 詳細(xì)講解Java輸入語(yǔ)句的寫(xiě)法

    詳細(xì)講解Java輸入語(yǔ)句的寫(xiě)法

    作為初步進(jìn)入java開(kāi)發(fā)學(xué)習(xí)的小白來(lái)說(shuō),學(xué)習(xí)java語(yǔ)言一開(kāi)始的時(shí)候得一步步的學(xué)習(xí),比如說(shuō)java輸入語(yǔ)句應(yīng)該這么去實(shí)現(xiàn)呢,這篇文章主要給大家介紹了關(guān)于Java輸入語(yǔ)句的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Java動(dòng)態(tài)代理的應(yīng)用詳解

    Java動(dòng)態(tài)代理的應(yīng)用詳解

    本篇文章介紹了,Java動(dòng)態(tài)代理的應(yīng)用詳解,需要的朋友參考下
    2013-05-05
  • SpringCloud讀取Nacos配置中心報(bào)錯(cuò)及遇到的坑:Could?not?resolve?placeholder?‘xxx’?in?value?‘${xxx}

    SpringCloud讀取Nacos配置中心報(bào)錯(cuò)及遇到的坑:Could?not?resolve?placehold

    這篇文章主要介紹了SpringCloud讀取Nacos配置中心報(bào)錯(cuò):Could?not?resolve?placeholder?‘xxx’?in?value?‘${xxx},本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 詳解Spring Boot配置排序依賴(lài)技巧

    詳解Spring Boot配置排序依賴(lài)技巧

    本篇文章主要介紹了Spring Boot配置排序依賴(lài)技巧,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Spring Security 單點(diǎn)登錄簡(jiǎn)單示例詳解

    Spring Security 單點(diǎn)登錄簡(jiǎn)單示例詳解

    這篇文章主要介紹了Spring Security 單點(diǎn)登錄簡(jiǎn)單示例詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Java使用fill()數(shù)組填充的實(shí)現(xiàn)

    Java使用fill()數(shù)組填充的實(shí)現(xiàn)

    這篇文章主要介紹了Java使用fill()數(shù)組填充的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java通過(guò)Fork/Join優(yōu)化并行計(jì)算

    Java通過(guò)Fork/Join優(yōu)化并行計(jì)算

    這篇文章主要為大家詳細(xì)介紹了Java通過(guò)Fork、Join來(lái)優(yōu)化并行計(jì)算,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • springboot2.x使用Jsoup防XSS攻擊的實(shí)現(xiàn)

    springboot2.x使用Jsoup防XSS攻擊的實(shí)現(xiàn)

    這篇文章主要介紹了springboot2.x使用Jsoup防XSS攻擊的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評(píng)論