1. 程式人生 > >Spring Bean--自動裝配

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");
    }

}

執行:
這裡寫圖片描述
注:

  1. 使用構造器注入必須寫建構函式,其他方式可不寫。
  2. 根據屬性名裝配必須設定id
  3. 根據型別裝配,必須設定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