欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳細(xì)易懂帶你了解Spring中的注解

 更新時(shí)間:2023年08月17日 10:34:45   作者:SunCodingづ  
這篇文章主要介紹了詳細(xì)易懂帶你了解Spring中的注解,Spring的一個(gè)核心是IOC,是將Bean初始化加載到容器中,Bean是如何加載到容器的,可以使用Spring注解方式或者Spring XML配置方式,需要的朋友可以參考下

Spring注解

Spring的一個(gè)核心是IOC,是將Bean初始化加載到容器中,Bean是如何加載到容器的,可以使用Spring注解方式或者Spring XML配置方式。

Spring注解方式減少了配置文件內(nèi)容,更加便于管理,并且使用注解可以大大提高了開發(fā)效率!

注解本身是沒有功能的,和xml一樣,注解和xml都是一種元數(shù)據(jù),元數(shù)據(jù)即解釋數(shù)據(jù)的數(shù)據(jù),也就是所謂的配置。

聲明bean的注解

  • @Component: 普通的注解
  • @Service :業(yè)務(wù)邏輯層以及Service層
  • @Controller: 外部層
  • @Repository :dao層即持久層

注:@Controller、@Service、@Repository都可以稱為@Component

注入bean的注解

@Autowired (根據(jù)屬性類型自動(dòng)裝配)

當(dāng)在將一個(gè)類上標(biāo)注@Service或者@Controller或@Component或@Repository注解之后,spring的組件掃描就會(huì)自動(dòng)發(fā)現(xiàn)它,并且會(huì)將其初始化為spring應(yīng)用上下文中的bean。

當(dāng)需要使用這個(gè)bean的時(shí)候,加上==@Autowired==注解的時(shí)候,這個(gè)bean就會(huì)被創(chuàng)建。而且初始化是根據(jù)無參構(gòu)造函數(shù)。

  • @Autowired可以標(biāo)注在屬性上、方法上和構(gòu)造器上,來完成自動(dòng)裝配。
  • 默認(rèn)是根據(jù)屬性類型,spring自動(dòng)將匹配到的屬性值進(jìn)行注入

當(dāng)@Autowired標(biāo)注的屬性是接口時(shí),其實(shí)注入的是這個(gè)接口的實(shí)現(xiàn)類, 如果這個(gè)接口有多個(gè)實(shí)現(xiàn)類,只使用@Autowired就會(huì)報(bào)錯(cuò),因?yàn)樗J(rèn)是根據(jù)類型找,然后就會(huì)找到多個(gè)實(shí)現(xiàn)類bean,所有就不知道要注入哪個(gè)。然后它就會(huì)根據(jù)屬性名去找。所以如果有多個(gè)實(shí)現(xiàn)類可以配合@Qualifier(value=“類名”)來使用

    @Autowired
    private UserServiceImpl userService;
    @GetMapping("{id}")
    public Result<List<OrderDTO>> selectById(@PathVariable Integer id) {
        List<OrderDTO> list = userService.selectById(id);
        return Result.ok(list);
    }

@Resource (可以根據(jù)類型注入,也可以根據(jù)名稱注入)

@Resource有兩個(gè)重要屬性,分別是name和type

spring將name屬性解析為bean的名字,而type屬性則被解析為bean的類型。

所以如果使用name屬性,則使用byName的自動(dòng)注入策略,如果使用type屬性則使用byType的自動(dòng)注入策略。

如果都沒有指定,則通過反射機(jī)制使用byName自動(dòng)注入策略。

@Resource(name="gender")
    private String gender;
@Resource(name="age")
    private String age;
<bean name="gender" class="java.lang.String"> 
    <constructor-arg value="${oos.gender}"/> 
</bean> 
<bean name="age" class="java.lang.String"> 
    <constructor-arg value="${oos.age}"/> 
</bean>

@Resource和@Autowired注解都是實(shí)現(xiàn)依賴注入的。

只是@AutoWried按by type自動(dòng)注入,而@Resource默認(rèn)按byName自動(dòng)注入。

@Qualifier (根據(jù)屬性名稱進(jìn)行注入)

@Qualifier的使用要和上面的@Autowired一起使用,讓系統(tǒng)知道了我們具體要引入哪個(gè)實(shí)現(xiàn)類,當(dāng)有多個(gè)實(shí)現(xiàn)類的時(shí)候,我們可以使用此方法

    @Autowired
    @Qualifier(value = "userDaoImpl")
    private UserDao userDao;

@Value 注入普通類型的注入

通過@Value注解指定系統(tǒng)屬性的名稱susan.test.userName,該名稱需要使用${}包起來。

@Value注解中指定的系統(tǒng)屬性名,必須跟配置文件中的相同。

@Service
public class UserService {
    @Value("${test.userName}")
    private String userName;
    public String test() {
        System.out.println(userName);
        return userName;
    }
}

而配置文件中配置的系統(tǒng)屬性名是:

test.user-name=張三

最后獲取數(shù)據(jù)時(shí),會(huì)發(fā)現(xiàn)userName竟然可能會(huì)出現(xiàn)亂碼:

手動(dòng)將ISO-8859-1格式的屬性值,轉(zhuǎn)換成UTF-8格式。

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

相關(guān)文章

  • Java中的RestTemplate使用詳解

    Java中的RestTemplate使用詳解

    這篇文章主要介紹了Java中的RestTemplate使用詳解,Spring內(nèi)置了RestTemplate作為Http請(qǐng)求的工具類,簡(jiǎn)化了很多操作,雖然Spring5推出了WebClient,但是整體感覺還是RestTemplate用起來更簡(jiǎn)單方便一些,需要的朋友可以參考下
    2023-10-10
  • Java 線程池原理深入分析

    Java 線程池原理深入分析

    這篇文章主要介紹了Java 線程池原理深入分析的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Spring Security跳轉(zhuǎn)頁面失敗問題解決

    Spring Security跳轉(zhuǎn)頁面失敗問題解決

    這篇文章主要介紹了Spring Security跳轉(zhuǎn)頁面失敗問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Springboot傳輸數(shù)據(jù)時(shí)日期格式化問題

    Springboot傳輸數(shù)據(jù)時(shí)日期格式化問題

    這篇文章主要介紹了Springboot傳輸數(shù)據(jù)時(shí)日期格式化問題,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Springboot mybatisplus如何解決分頁組件IPage失效問題

    Springboot mybatisplus如何解決分頁組件IPage失效問題

    這篇文章主要介紹了Springboot mybatisplus如何解決分頁組件IPage失效問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java事件處理機(jī)制和適配器全面解析

    Java事件處理機(jī)制和適配器全面解析

    這篇文章主要介紹了Java事件處理機(jī)制和適配器全面解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring輕松解決循環(huán)依賴

    Spring輕松解決循環(huán)依賴

    Spring的解決循環(huán)依賴是有前置條件的,要解決循環(huán)依賴我們首先要了解Spring Bean對(duì)象的創(chuàng)建過程和依賴注入的方式。依賴注入方式,我之前的博客有所分享,大家可以在看本篇文章之前進(jìn)行一下小小的回顧
    2023-04-04
  • 聊聊spring繼承的問題

    聊聊spring繼承的問題

    這篇文章主要介紹了spring繼承的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • PowerJob的MapProcessor工作流程源碼解讀

    PowerJob的MapProcessor工作流程源碼解讀

    這篇文章主要為大家介紹了PowerJob的MapProcessor工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Java找出兩個(gè)大數(shù)據(jù)量List集合中的不同元素的方法總結(jié)

    Java找出兩個(gè)大數(shù)據(jù)量List集合中的不同元素的方法總結(jié)

    本文將帶大家了解如何快速的找出兩個(gè)相似度非常高的List集合里的不同元素。主要通過Java API、List集合雙層遍歷比較不同、借助Map集合查找三種方式,需要的可以參考一下
    2022-10-10

最新評(píng)論