日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Spring 完成自动注入(autowire)

發(fā)布時間:2023/12/13 综合教程 44 生活家
生活随笔 收集整理的這篇文章主要介紹了 Spring 完成自动注入(autowire) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄


兩個測試類

普通方式手動注入

普通方式注入的缺點

自動注入的介紹

配置自動注入的方式

配置全局自動注入

局部單獨配置

利用注解實現(xiàn)自動注入


兩個測試類

package cn.ganlixin.pojo;

public class Major {
	private String name;
	private String category;
	
	// 此處省略了無參構造方法、有參構造方法、getter和setter、toString方法
}

  

package cn.ganlixin.pojo;

public class Student {
	private int id;
	private String name;
	private Major major;  // 需要引用一個major對象
	
	// 此處省略了無參構造方法、有參構造方法、getter和setter、toString方法
}

  

普通方式注入

  上面的Student依賴于一個Major類型的對象,在創(chuàng)建Student這個類的對象(bean)的時候,對major屬性進行注入時,需要引用一個Major類創(chuàng)建的bean,也就是下面這樣:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
        
    <bean id="major" class="cn.ganlixin.pojo.Major"></bean>
    
    <bean id="student" class="cn.ganlixin.pojo.Student">
    	<!-- 引用上面的major bean -->
    	<property name="major" ref="major"></property>
    </bean>

</beans>

  

普通方式注入的缺點

  從上面的配置上來看,其實配置一個<property>好像并不困難,但是當項目稍微大一點,類中屬性稍微復雜一點,那么配置利用<property>進行注入將是特別不便捷的,需要寫很多的<property>,并且需要記住創(chuàng)建的bean的id,否則可能會引用錯誤。

  另外,在修改配置的時候也不方便,當一個bean的id發(fā)生改變,引用他的bean中的<property>的ref屬性也要進行修改,所以,真的不方便。

自動注入的介紹

  依舊以上面這段配置為例:

<bean id="major" class="cn.ganlixin.pojo.Major"></bean>

<bean id="student" class="cn.ganlixin.pojo.Student">
	<!-- 引用上面的major bean -->
	<property name="major" ref="major"></property>
</bean>

  其實,我們發(fā)現(xiàn),student這個bean中的<property>中的name和ref,值(字符串)都是一樣的,如果能省略這一句,然后讓student的major屬性自動去找id為major的<bean>,就方便很多了。

<bean id="major" class="cn.ganlixin.pojo.Major"></bean>

<bean id="student" class="cn.ganlixin.pojo.Student" autowire="byName"></bean>
<!-- major屬性自動去Spring容器中尋找id為major的bean,自動引用 -->

  其實這就是自動注入,只不過,我們還需要進行其他配置。

配置自動注入的方式

  配置自動注入的方式有兩種,一種是全局配置,另一種是局部單獨配置。

  全局配置:只配置一次,之后配置文件中的所有bean,都按照全局配置進行注入,全局配置是在<beans>標簽中配置default-autowire="Xxx";

  局部單獨配置:對于每一個bean,單獨設置注入方式,單獨配置是在單獨的<bean>標簽中配置autowire="xxx"。

  對于全局配置和局部單獨配置,都有5個值可以選擇:

  1、no:當autowire設置為no的時候,Spring就不會進行自動注入,相當于不給引用屬性賦值。

  2、byName:在Spring容器中查找id與屬性名相同的bean,并進行注入。

  3、byType:在Spring容器中查找類型與屬性名的類型相同的bean,并進行注入。

  4、constructor:仍舊是使用byName方式,只不過注入的時候,使用構造方式進行注入。

  5、default:全局配置的default相當于no,局部的default表示使用全局配置設置

配置全局自動注入

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd"
    	default-autowire="byName"  
    >
    <!-- 注意,<beans>標簽中配置了全局自動注入方式 -->
        
	<bean id="major" class="cn.ganlixin.pojo.Major"></bean>
	<bean id="student" class="cn.ganlixin.pojo.Student"></bean>
	<!-- 默認使用全局配置,全局設置為byName,所以會按照byName方式自動注入, -->
</beans>

  

局部單獨配置

  使用局部單獨配置就是在要創(chuàng)建的<bean>中設置autowire屬性:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd"
        default-autowire="no"
    >
    <!-- 注意,<beans>標簽中配置了全局自動注入方式 -->
        
	<bean id="major" class="cn.ganlixin.pojo.Major"></bean>
	<bean id="student" class="cn.ganlixin.pojo.Student" autowire="byName"></bean>
	<!-- 局部進行配置后,會覆蓋全局配置,局部設置為byName,所以會按照byName方式自動注入, -->
</beans>

  

使用注解實現(xiàn)自動注入

  使用注解自動注入,可以參考:Spring 使用注解完成IoC與DI

  主要使用的是@autowired和@Resource兩個注解

總結

以上是生活随笔為你收集整理的Spring 完成自动注入(autowire)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。