@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