011---@Autowired註解以及 @Qualifier 註解

@Autowired註解的作用是將spring IOC容器中的bean自動裝配,例如controller 用到service,service用到了dao,這些類都在IOC容器中已經有了;controller示例代碼

package top.huashengshu.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import top.huashengshu.dao.HelloDao;

@Controller
public class HelloWorldController {
    @Autowired
    private HelloDao helloDao;
}

將已有的HelloDao類裝配到Controller

@Autowired(required = false)的作用是,如果在ioc容器中找到了組件則注入進去,如果沒有則不許裝配,如果required=true則必須裝配

因爲@Autowired註解默認的注入方式是按照類型的方式注入的,而在配置的時候可能配置了相同類型的bean,比如 一種方式是按照包掃描的方式加入IOC容器的,另一種方式是按照@Bean註解加入到IOC容器的。那麼@Autowired注入的到底是哪一種呢?

 

如果容器中的有相同的類型bean,可以修改名字來指定Autowired注入的bean例如下面的方式也可

@Controller
public class HelloWorldController {

    @Autowired
    private HelloDao helloDao2;
}

 

另外一種解決方式是加入@Qualifier註解指定注入的bean名稱即getBean("名稱")

或者稱之爲id

@Controller
public class HelloWorldController {
    @Qualifier("helloDao2")
    @Autowired
    private HelloDao helloDao;
}

@Primary

讓spring自動裝配的時候默認首選裝配的bean

 

 

 

發佈了259 篇原創文章 · 獲贊 15 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章