Spring中我們可以使用以下三個自動裝配的注解進行依賴注入:
| 注解 | 所在包 | 來源 |
| --- | --- | --- |
| @Autowired | org.springframework.beans.factory.annotation.Autowired | Spring自帶的注解 |
| @Resource | javax.annotation.Resource | JSR-250標準的注解 |
| @Inject | javax.inject.Inject | JSR-330標準的注解 |
* @Autowired注解默認是按照類型(byType)裝配依賴對象,默認情況下它要求依賴對象必須存在,當沒有找到相應bean的時候,IOC容器就會報錯。不過@Autowired有個required屬性,可以配置為false,如果配置為false之后,當沒有找到相應bean的時候就注入null,系統不會拋錯。如果我們想使用按照名稱(byName)來裝配,可以結合@Qualifier注解一起使用。
* @Resource默認按照名字(byName)裝配依賴對象,由JAVAEE提供,需要導入包javax.annotation.Resource。@Resource有兩個重要的屬性:name和type,而Spring將@Resource注解的name屬性解析為bean的名字,而type屬性則解析為bean的類型。所以,如果使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略。如果既不制定name也不制定type屬性,這時將通過反射機制使用byName自動注入策略。
* @Inject注解默認也是按照類型(byType)裝配依賴對象,如果需要按名稱進行裝配,則需要配合@Named注解。@Inject 注解沒有 required 屬性,因此在找不到合適的依賴對象時 inject 會系統會報錯失敗
> spring @Autowired 注解默認按類型自動裝配,當有多個bean能匹配上時將自動切換成按名字(byName)裝配,若按名字無法裝配時將拋出BeanCreateException
- 概述
- Spring的使命
- 環境變量
- spring架構
- Spring各版本特性
- Spring3.1新特性
- spring頂級項目
- spring基礎
- spring環境變量
- 依賴注入
- spring獲取bean方法
- BeanFactory vs FactoryBean
- JavaBean裝配
- XML顯式配置
- 基于JAVA配置
- 自動化裝配bean
- SpringBean的作用域
- Spring應用上下文實現
- springbean的生命周期
- 自定義Bean的創建與銷毀
- Spring容器啟動過程
- spring加載xsd文件的流程
- spring擴展接口
- Spring主要類功能說明
- spring事務管理
- 事務特性
- 數據庫事務隔離級別
- 事務隔離性問題
- spring事務隔離級別
- 事務傳播行為
- @Transactional
- 循環依賴
- 構造器注入
- 循環依賴原理
- spring循環依賴原理
- spring三級緩存
- Spring注解
- @Component
- @ComponentScan
- @Autowired
- @Import
- @ImportResource
- @Profile
- @Conditional
- @Qualifier
- @Scope
- @PropertySource
- @Value
- @EnableScheduling
- SpEL-Spring表達式
- Spring-AOP
- SpringAOP五種通知類型
- AOP術語
- SpringMVC
- MVC原理圖
- SpringMVC工作原理
- springboot
- @SpringCloudApplication
- springboot tomcat配置
- Spring Boot Starter POMs
- Spring Boot technical starters
- spring boot事件類型
- Springboot日志
- SpringCloud
- springcloud微服務解決方案
- 服務組件
- 注冊中心
- Eureka
- Spring Cloud Zookeeper
- nacos
- Hystrix熔斷原理
- Hystrix應用
- Spring Cloud Config
- 服務網關
- Zuul
- Spring Cloud Gateway
- 服務調用及負載
- Ribbon
- Feign&OpenFeign
- Turbine
- actuator
- springboot & springcloud
- springcloud vs dubbo
- 常見面試題
- BeanFactory和FactoryBean
- @Autowired/@Resource和@Inject的區別
- Singleton bean注入prototype bean
- 附錄