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

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

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

服務器之家 - 編程語言 - Java教程 - 深入理解java的spring-ioc的使用

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

2021-07-21 11:46張占嶺(倉儲大叔,Lind) Java教程

這篇文章主要介紹了java的spring-ioc的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

spring-ioc的使用

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

  1. 把服務注冊到ioc容器
  2. 使用屬性注入反射對應類型的實例
  3. 多態情況下,使用名稱反射類型的實例

把服務注冊到ioc容器

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

@component,@configuration,service,repository注冊組件

這幾個注解都是在類上面聲明的,而@bean是聲明在方法上的,這一點要注意,這幾個注解一般是指對一個接口的實現,在實現類上加這些注解,例如,一個數據倉儲接口userrepository,它可以有多種數據持久化的方式,如sqluserrepositoryimpl和mongouserrepositoryimpl,那么在注冊時你需要為他們起一個別名,如@repository("sql-userrepositoryimpl) qluserrepositoryimpl,默認的名稱是類名,但注意類名首字母為小寫

?
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
31
32
33
34
35
36
37
38
39
40
41
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);
 }
}
// 看一下調用時的測試代碼
 @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對象
在通過別名調用bean時,你可以使用@resource注解來裝配對象

2.使用@autowired裝配bean對象
也可以使用 @autowired
@qualifier( "emaillogservicehttpimpl")兩個注解去實現程序中的多態

使用場景

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

寫個偽代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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的使用詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:https://www.cnblogs.com/lori/p/10512402.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 四虎国产成人免费观看 | 日本漫画大全之工之口 | 窝窝影院午夜色在线视频 | 暖暖在线精品日本中文 | 久久久久国产一级毛片高清片 | 国产成人精品视频午夜 | 午夜影院和视费x看 | 91麻豆精品国产自产在线观看 | 四虎影视免费观看免费观看 | tkvk视频| 国产亚洲精品美女久久久 | 99精品国产成人a∨免费看 | 无码射肉在线播放视频 | 欧美人禽杂交狂配无删完整 | 香艳69xxxxx有声小说 | 毛片大全免费看 | 香蕉精品国产高清自在自线 | 国产精品女同久久免费观看 | 免费看成年视频网页 | 亚洲成熟人网站 | 韩国免费特一级毛片 | 动漫精品午夜在线播放 | 国产亚洲欧美成人久久片 | 偷拍综合网 | 太紧太深了受不了黑人 | 免费一级日本c片完整版 | 久久久久久久久女黄9999 | 轻轻操在线视频 | 欧美人妖大啪啪 | 免费特黄一级欧美大片 | 久久亚洲精品成人 | 范冰冰a级一级特级毛片 | 青苹果乐园影院免费观看完整版 | 无遮挡免费h肉动漫在线观看 | 18无删减羞羞网站动漫 | 亚洲欧美国产精品完整版 | 国产资源站 | 免费一级特黄特色大片在线观看 | 国产99在线 | 国产无套在线播放 | 亚洲四虎影院 |