### @Autowired用法
* 注解構造方法
* setter方法注解
* @Autowired注解可以用在類的任何方法
```
1.注解構造方法
@Component
public class UserDao {
private IRedisService redisService;
@Autowired
public UserDao(RedisServiceImpl redisService) {
this.redisService = redisService;
}
}
2.setter方法注解
@Component
public class UserDao {
private IRedisService redisService;
@Autowired
public void setRedisService(IRedisService redisService) {
this.redisService = redisService;
}
}
3.@Autowired注解可以用在類的任何方法
```
### @Autowired裝配過程
1. @Autowired注解裝配時,假如有且只有一個bean匹配依賴需求的話,那么這個bean將會被裝配進來;
2. 如果沒有匹配的bean,那么在應用上下文創建的時候,Spring會拋出一個異常。為了避免異常的出現,你可以將@Autowired的required屬性設置為false;將required屬性設置為false時,Spring會嘗試執行自動裝配,但是如果沒有匹配的bean的話,Spring將會讓這個bean處于未裝配的狀態。但是,把required屬性設置為false時,你需要謹慎對待。如果在你的代碼中沒有進行null檢查的話,這個處于未裝配狀態的屬性有可能會出現NullPointerException;
```
@Component
public class UserDao {
@Autowired(required=false)
private IRedisService redisService;
}
```
3. 如果有多個bean都能滿足依賴關系的話,Spring將會拋出一個異常,表明沒有明確指定要選擇哪個bean進行自動裝配;
### @Inject
@Autowired是Spring特有的注解。如果你不愿意在代碼中到處使用Spring的特定注解來完成自動裝配任務的話,那么你可以考慮將其替換為@Inject:
```
@Component
public class UserDao {
@Inject
private IRedisService redisService;
}
```
說明:@Inject注解來源于Java依賴注入規范,該規范同時還為我們定義了@Named注解。在自動裝配中,Spring同時支持@Inject和@Autowired。盡管@Inject和@Autowired之間有著一些細微的差別,但是在大多數場景下,它們都是可以互相替換的
### 自動裝配的歧義性
1. @Autowired自動裝配時如果有多個實例,無法確定唯一值,則spring會拋出異常;
2. 指定首選項@Primary;
3. 使用限定符@Qualifier指定要注入的beanId;
說明:@Qualifier的優先級將高于@Primary
- 概述
- 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
- 附錄