spring二:装配bean(自动装配)
? 創建應用對象之間協作關系的行為通常稱為裝配(wiring),這就是依賴注入(DI)的本質。
? Spring提供了三種主要的裝配機制: 1. 在xml中進行顯式配置。 ?2. 在java中進行顯式配置。 3. 隱式的bean發現機制和自動裝配。
? bean的裝配:就是bean對象的創建,屬性賦值,把創建好的對象賦值給程序的過程。
?自動化裝置bean
? ? ? ? ? spring 從兩個角度來實現自動化裝置.1:組件掃描(component scanning),spring會自動發現應用上下文中所創建的應用。
? 2. 自動裝配(autowiring) ,spring自動滿足bean之間的依賴
? ? 如下:創建一個接口
package soundsystem;public interface CompactDisk {void play(); }? ?創建一個實現類實現上面的接口. ?@Component表明這個類是一個組件類,并告知spring要為這個類創建bean。(@Named可以替換@Component,但在大多數場景中,它們可以是互相替換)
package soundsystem;import org.springframework.stereotype.Component;@Component public class SgtPeppers implements CompactDisk{private String title = "Sgt. Pepper's Lonely Hearts Club Band";private String artist = "The Beatles";@Overridepublic void play() {// TODO Auto-generated method stubSystem.out.println("Playing "+title+" by "+artist);} }?組件掃描默認不開啟。我們需要配置下spring,讓spring尋找帶有@Component注解的類。 @ComponentScan默認掃描與配置類相同的包,也就是會掃描這個包以及這個包下的所有子包,查找帶有@Compenent注解的類。(使用XML也可以啟用自動掃描)
package soundsystem;import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration;@Configuration @ComponentScan // 啟動組件掃描,按照默認規則,以配置類所在的包作為基礎包來掃描組件。 public class CDPlayerConfig {}spring應用上下文中所有的bean都會給定一個id,通過@Component("lonelyHeartsClub"),就把lonelyHeartsClub作為bean的id了。
?
? 在構造器上添加了@Autowired注解, 這表明當Spring創建CDPlayerbean的時候, 會通過
這個構造器來進行實例化并且會傳入一個可設置給CompactDisc類型的bean。
@Autowired注解不僅能夠用在構造器上,還能夠用在屬性的Setter方法上,或者其他任何方法上。(@Inject和@Autowired之間有著一些細微的差別, 但是在大多數場景下, 它們都是可以互相替換的
)
?
?注解@ContextConfiguration會告訴spring需要在CDPlayerConfig中加載配置。
?
總結
以上是生活随笔為你收集整理的spring二:装配bean(自动装配)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring一: 容器以及bean生命周
- 下一篇: spring三: 装配bean( 在xm