av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

淺談SpringBoot @Autowired的兩種注入方式

瀏覽:3日期:2023-02-28 13:15:30

Autowired有兩種注入方式

by type by name

默認使用的是byType的方式向Bean里面注入相應的Bean。例如:

@Autowiredprivate UserService userService;

這段代碼會在初始化的時候,在spring容器中尋找一個類型為UserService的bean實體注入,關聯到userService的引入上。但是如果UserService這個接口存在多個實現類的時候,就會在spring注入的時候報錯,例如:

public class UserService1 implements UserServicepublic class UserService2 implements UserService

此時會報錯 org.springframework.beans.factory.BeanCreationException,而原因是注入的時候發現有2個匹配的bean,但是不知道要注入哪一個:expected single matching bean but found 2: userService1,userService2我們改成以下方式:

@Autowiredprivate UserService userService1;@Autowiredprivate UserService userService2;@Autowired@Qualifier(value = 'userService2')private UserService userService3;@Testpublic void test(){ System.out.println(userService1.getClass().toString()); System.out.println(userService2.getClass().toString()); System.out.println(userService3.getClass().toString());}

運行結果:

class yjc.demo.serviceImpl.UserService1class yjc.demo.serviceImpl.UserService2class yjc.demo.serviceImpl.UserService2

運行結果成功,說明了2種處理多個實現類的方法:

1.變量名用userService1,userService2,而不是userService。通常情況下@Autowired是通過byType的方法注入的,可是在多個實現類的時候,byType的方式不再是唯一,而需要通過byName的方式來注入,而這個name默認就是根據變量名來的。

2.通過@Qualifier注解來指明使用哪一個實現類,實際上也是通過byName的方式實現。由此看來,@Autowired注解到底使用byType還是byName,其實是存在一定策略的,也就是有優先級。優先用byType,而后是byName。

到此這篇關于淺談SpringBoot @Autowired的兩種注入方式的文章就介紹到這了,更多相關SpringBoot @Autowired注入內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 午夜影院普通用户体验区 | 在线亚洲欧美 | 午夜一区二区三区在线观看 | 欧美久久一区 | 天堂资源视频 | 激情久久av一区av二区av三区 | 日韩视频精品 | 在线免费观看毛片 | av国产精品 | 天天摸天天看 | 雨宫琴音一区二区在线 | 超碰国产在线 | 黄色一级大片在线免费看产 | 久久久久久久一区 | 在线视频一区二区 | www.色综合| 黄页网址在线观看 | 亚洲九九| 午夜电影在线播放 | 成人在线精品 | 精品不卡 | 丝袜毛片| 一区二区免费 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 九九九视频精品 | 欧美在线 | 中文字幕国| 国产精品久久久久久久久久久久冷 | 一本岛道一二三不卡区 | av网站在线免费观看 | 91.xxx.高清在线| 精品一区二区三区四区五区 | 在线国产一区二区三区 | 91麻豆产精品久久久久久夏晴子 | 成人av片在线观看 | 97在线播放 | 91性高湖久久久久久久久_久久99 | 一级欧美一级日韩片免费观看 | 亚洲国产精品久久久久秋霞不卡 | 久久国产精彩视频 | 日韩超碰|