Spring Bean--自動裝配
自動裝配:實現bean的注入或者裝配
bean的自動裝配的型別(預設型別為No):
在同一個IOC容器中,id即屬性名是唯一的。
例:
spring-autowiring.xml設定default-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="constructor">
<!-- 也可設定為byName,使用byName時,不可忽略AutoWiringDAO的id的配置 ;
byType的自動注入和bean的id沒有直接關係,當使用byType時,可省略此檔案中AutoWiringDAO的id的配置 ;
設定為"constructor"時,必須增加構造方法
-->
<bean id="autoWiringService" class="com.autowiring.AutoWiringService" ></bean>
<bean id="autoWiringDAO" class="com.autowiring.AutoWiringDAO"></bean>
</beans>
AutoWiringDAO:
package com.autowiring;
public class AutoWiringDAO {
public void say(String word){
System.out.println("AutoWiringDAO:"+word);
}
}
AutoWiringService:
package com.autowiring;
public class AutoWiringService {
private AutoWiringDAO autoWiringDAO;
//設定 default-autowire="constructor"要增加構造方法,只有構造器注入才寫構造方法,其他方式可不寫
//根據構造器注入是在IOC容器中查詢構造器方法傳入引數的型別是否在IOC容器存在相應型別的bean的例項,若查詢型別class,則與id無關,可在bean的配置中刪除id
public AutoWiringService(AutoWiringDAO autoWiringDAO){
System.out.println("AutoWiringService");
this.autoWiringDAO=autoWiringDAO;
}
//在spring-autowiring.xml中設定了default-autowire="byName",
//會在Spring的IOC容器中尋找名稱為autoWiringDAO的bean的id,會將其對應的例項賦值給AutoWiringService宣告的autoWiringDAO物件
public void setAutoWiringDAO(AutoWiringDAO autoWiringDAO) {
this.autoWiringDAO = autoWiringDAO;
}
public void say(String word){
this.autoWiringDAO.say(word);
}
}
測試TestAutoWiring:
package com.test.autowiring;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
import com.autowiring.AutoWiringService;
import com.imooc.test.base.UnitTestBase;
@RunWith(BlockJUnit4ClassRunner.class)
public class TestAutoWiring extends UnitTestBase {
public TestAutoWiring() {
super("classpath:spring-autowiring.xml");
}
@Test
public void testSay(){
AutoWiringService service=super.getBean("autoWiringService");
service.say("this is a test");
}
}
執行:
注:
- 使用構造器注入必須寫建構函式,其他方式可不寫。
- 根據屬性名裝配必須設定id
- 根據型別裝配,必須設定class,可不設定id
相關推薦
Spring Bean 自動裝配 的歧義性(bean 的名稱重複)處理
在spring 中,spring 對於上下文的bean ,當自動裝配時,如果bean 的名稱相同,spring 無法做出選擇 。這就所謂的bean 自動裝配的歧義性。所以,當發現歧義性的時候,需要通過一些的方案來解決這個問題。 將可選bean 中的某個設定為首選(primary)的bea
學習spring bean自動裝配
Spring 容器可以在不使用<constructor-arg>和<property> 元素的情況下自動裝配相互協作的 bean 之間的關係,這有助於減少編寫一個大的基於 Spring 的應用程式的 XML 配置的數量。 自動裝配模式 下列自動裝配模式,
Spring Bean--自動裝配
自動裝配:實現bean的注入或者裝配 bean的自動裝配的型別(預設型別為No): 在同一個IOC容器中,id即屬性名是唯一的。 例: spring-autowiring.xml設定default-autowire: <?xml ve
Spring 初探(五)(Spring Bean 自動裝配與自定義監聽事件)
現在通行的使用bean的方法是不通過xml進行配置,而僅僅採用java 內建的類指明bean及相應的依賴關係,下面展開敘述。 @Configuration可以宣告某個類是作為配置類,在這樣的類中 通過@Bean進行修飾的方法可以返回相應的bean類 通過由Annotatio
Spring XML配置裏的Bean自動裝配
裝配bean car 是我 構造器 判斷 rand 命名 res class Spring自動裝配 這段是我們之前編寫的代碼,代碼中我們使用了P命名空間 並且使用手動裝配的方式將car <bean id="address" class="cn.bdqn.spr
3.spring:自動裝配/Bean之間的關係/作用域/外部檔案/spel/
1.自動裝配/手動裝配 xml配置檔案裡的bean自動裝配 Spring IOC 容器裡可以自動的裝配Bean,需要做的僅僅是在<bean>的autowire屬性裡面指定自動裝配模式 ->byType(根據型別自動進行裝配):若IOC容器裡需要有多個與目標Bean型別一樣的Bean,在這種
3.spring:自動裝配/Bean之間的關系/作用域/外部文件/spel/
depends ... 完全 構造器 外部文件 conn wire odi host 1.自動裝配/手動裝配 xml配置文件裏的bean自動裝配 Spring IOC 容器裏可以自動的裝配Bean,需要做的僅僅是在<bean>的autowire屬性裏面指定自動裝
Spring 學習(五)——XML 配置裡的 Bean 自動裝配
XML 配置裡的 Bean 自動裝配 •Spring IOC 容器可以自動裝配 Bean. 需要做的僅僅是在 <bean> 的 autowire 屬性裡指定自動裝配的模式 •byType(根據型別自動裝配): 若 IOC 容器中有多個與目標 Bean 型別一致的 Bean. 在這
在Spring中自動裝配Bean的屬性
Spring的最基本的能力就是DI,即依賴注入,或控制反轉,它可以為Bean注入其依賴的其他Bean。 一個Bean依賴其他Bean一般是通過在Bean中定義其他Bean的成員變數的方式來實現的,那麼,Spring的DI也就表現為給Bean的屬性自動注入值。 這一般分為以下其中情況。 1
Spring的自動裝配Bean的四種方式
Spring提供了四種自動裝配的方式(Version 5.0.6.RELEASE),分別是: no:(預設)無自動裝配。 Bean引用必須通過ref元素定義。 byName:自動按屬性名稱進行呼叫。
Spring的自動裝配Bean
Spring的自動裝配功能的定義:無須在Spring配置檔案中描述javaBean之間的依賴關係(如配置<property>、<constructor-arg>)。IOC容器會自動建立javabean之間的關聯關係。 如果沒有采用自動裝配的話,手動
5.Spring MVC 自動裝配問題
spring getbean ram ng- get wire enc system say 一.使用@controller註解,實際上也是在IOC容器中配置了,它的id是類的首字母小寫 一.使用@controller註解,實際上也是在IOC容器中配置了,它的id是類的首字
後端-框架-Spring-MyBatis-自動裝配
後端-框架-Spring-MyBatis-自動裝配 bean標籤下autowire屬性 autowire value no 手動裝配 byName
Spring IoC 之Spring Bean的裝配
一、裝配Bean概述 Spring提供了三種方法進行Bean的配置: 在XML中進行配置 在java介面和類中用註解進行配置 隱式Bean的發現機制和自動裝配原則 在現實工作中,這三種方式都會被用到,並常常混合使用。基於“約定優於配置”的原則,最優先的
Spring. 處理自動裝配的歧義性
在使用 @Autowired 註解的時候,如果有多個 bean 都能滿足依賴關係,Spring 將丟擲一個異常,這時,我們有必要處理自動裝配的歧義性,來唯一確定一個要使用的 bean。 1.標示首選的 bean 在宣告 bean 的時候,可通過將其中一個可選的 bean 設為首選(&nb
Spring之自動裝配
自動裝配 Spring利用依賴注入(DI),完成對IOC容器中中各個元件的依賴關係賦值 1)、@Autowired:自動注入: 預設優先按照型別去容器中找對應的元件:applicationContext.getBean(BookDao.class),找到就賦值
XML配置裡的Bean自動裝配與Bean之間的關係
需要在<bean>的autowire屬性裡指定自動裝配的模式 byType(根據型別自動裝配) byName(根據名稱自動裝配) constructor(通過構造器自動裝配) 名字須與屬性名一致 byName根據Bean
XML配置裏的Bean自動裝配與Bean之間的關系
depend alt -o 裏的 關聯 ren 分享 -- xml配置 需要在<bean>的autowire屬性裏指定自動裝配的模式 byType(根據類型自動裝配) byName(根據名稱自動裝配) constructor(通過構造器自動裝配) 名字
JavaWeb 筆記之 Bean 自動裝配
自動裝配 Spring IOC 容器可以自動裝配 Bean. 需要做的僅僅是在 <bean> 的 autowire 屬性裡指定自動裝配的模式 byType(根據型別自動裝配): 若 IOC 容器中有多個與目標 Bean 型別一致的 Bean. 在這種情況下,
Spring Boot 自動裝配
底層裝配技術 Spring 模式註解裝配 Spring @Enable 模組裝配 Spring 條件裝配裝配 Spring 工廠載入機制 實現類: SpringFactoriesLoader 配置資源: META-INF/spring.factories