Spring 和 DI 依賴注入

Spring是一個輕量級控制反轉(IoC)和麪向切面(AOP)的容器框架。

IOC的反轉 :

創建對象這份工作由我們自己反轉給了Spring幫我們執行。

IOC的控制 :

由Spring幫我們負責創建銷燬對象,掌握對象的生命週期,在我們需要對象時,向Spring申請即可。

DI 依賴注入 :

將值通過配置的方式爲變量初始化/賦值(注入)
>     注入方式: set 方法注入,構造注入, 屬性注入
>      值: 八大數據類型,
       		String,自定義屬性。

Spring 配置

XML 配置

    > Bean 元素:交由Spring 管理的對象都要配置在 bean 標籤中
                 bean 標籤的創建爲:空參構造,靜態工廠,動態工廠
    > name屬性: 起一個名字來辨識bean
    > class屬性:表示被管理對象的全包名,Spring會通過包名創建對象。eg:club.12zw.demo.User
    > scope屬性:
                singleton:單例模式:只允許創建一個對象。(默認採用)
                prototype:每一次獲取一個對象,都是不同的。
                request:生命週期與request的生命週期相同。
                session:生命週期只存在一次會話當中。
    >init-method: 容器創建對象之後調用的方法。如:User 中的指定方法
    >desotry-method: 容器銷燬對象之前調用的方法。如:User 中的指定方法
    >AlpplicationContext 默認情況下會再創建時創建配置表中所有bean對象,如果關閉,可以使用       --懶加載的方式(lazy-init = "true")--

屬性注入

     1.set 方法注入:再User bean中創建set,get方法,然後再xml配置中設置相關屬性。
     <bean  name="user" class="club.12zw.demo.User">
            <propetry name="u_id" value="1"/>
            <propetry name="u_name" value="comi"/>
            <propetry name="u_password" value="password"/>
     </bean>
     2.注入引用類型 (ref)
       <bean  name="user" class="club.12zw.demo.User">
            <propetry name="u_id" value="1"/>
            <propetry name="u_name" value="comi"/>
            <propetry name="u_password" value="password"/>
            <propetry name="u_pet" ref="dog" />     <<<-----
     </bean>
     <bean  name="dog" class="club.12zw.demo.pet">      <<<-----
            <propetry name="u_petType value="fw"/>
            <propetry name="color" value="black"/>
     </bean>

在這裏插入圖片描述
3.構造方法注入
再 User 中添加方法 在這裏插入圖片描述
bean --> name 爲 構造方法的參數名稱。 eg:user1
如果有兩個相同的構造方法,但是傳遞的值不同(重載),則需要指定參數類型。
contsructor-arg --> type 爲指定參數類型。 eg:java.lang.Integer
contsructor-arg --> index 爲指定參數位置。

    <contsructor-arg name="u_name" value="666" type="java.lang.Integer" index="0"/>
    
	 <bean name="user1" class="club.12zw.demo.User">
            <contsructor-arg name="u_name" value="siki"/>   
            <contsructor-arg name="u_pet" ref="dog" />     
     </bean>

4.複雜注入
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

註解開發

掃描改包下所有子包及所有註解
在這裏插入圖片描述
二者等價:component 相當於註解上的bean 配置

在這裏插入圖片描述
常用註解:

	@Controller("User")  // 對應web層
	@Service("User")	//對於服務層
	@repository("User")	//對於dao層
	@Component("User")
	@Scope(scopeName="prototype") //設置單例還是多例
	@PostConstruct() //再構造方法後調用
	@PreDesotry()	//再銷燬方法之前調用
	@Value(value = "1") // 屬性注入,可以在字段上,也可以再set方法上(推薦再set方法上使用)
	@Autowired() //自動裝配,但是當有多個註解時,就無法使用
	@Resoure(name="cat") //指定裝載  
	

junit 和 spring 測試

再測試類上添加註解@Runwith(SpringJUnit4ClassRunner.class) //只用junit進行測試,幫助我們創建容器
再讀取配置文件@ContextConfiguration(“classpath:xxxxx.xml”)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章