首先要了解什麼是控制反轉,和依賴注入。
概念對比:
控制反轉 | DI (dependency injection) 依賴注入 |
含義: 把原理new對象的這種方式轉換成了,spring通過反射建立對象的方式。 spring建立完的對象放到一個容器中,誰需要就給誰注入進去. 簡單說:把建立對象和管理對象的權利交給spring | 含義:就是給對象的屬性設定值. 原來給對象的屬性設定值: set方法給對象設定值 構造方法給對象初始化的時候設定值. |
對象的建立 | 對象屬性值的設定 |
控制反轉:
1.建立對象的幾種方式?
構造方法
靜态工廠
執行個體工廠
2.spring建立對象的範圍
問題: 每次擷取對象的時候,spring是新建立一個對象還是始終給我們傳回同一個對象?
單例: 記憶體中隻有一個對象,每次擷取到該對象的位址值一樣.
多例:記憶體中的每個對象都是一個新的對象,他們的位址值都不同.
答案: spring預設的情況下建立的對象都是單例的. (每次傳回的對象都是同一個)
3.spring建立對象的生命周期
spring建立的對象什麼時候建立,什麼時候運作,什麼時候銷毀.?
1. 建立, 加載配置檔案的時候
2. 運作,使用該對象的時候
3.銷毀 ,spring的容器關閉的時候
依賴注入:
1.注入依賴的幾種方式?
set方式設定屬性
構造方式注入
p名稱空間注入和c名稱空間注入
複雜資料類型注入
常用注解:
注解名 | 作用 |
@Component @Component("abc") | 預設的id是類名首字母小寫 手動的指定了 <bean id="abc" class="xxxx"> |
@Controller | 确定是表現層/控制層 使用Controller |
@Service | 業務邏輯使用 Service |
@Repository | dao持久層使用Repository |
@Autowired | 自動注解 |
@Qualifier("id") | 注入方式1:(根據的bean id值來指定) |
@Value("#{son1}") | 注入方式2: |
@Resource(name="son1") | 注入方式3:jdk的注入 |