1. 程式人生 > >Spring自動裝配之byName和byType【Spring入門】

Spring自動裝配之byName和byType【Spring入門】

在使用Spring框架時,有些bean中有個成員變數是另一個bean。舉個實際的例子,比如說CDPlayer類(CD播放器類)中有一個屬性是CD(介面),代表著CDPlayer可以放各種CD,可以例項化為Mayday(五月天的歌)。

原來我們需要在配置CDPlayer這個bean的時候新增<porperty>,手動裝配。程式碼如下:

        <bean id="cd" class="com.yykj.Mayday" />
        <bean id="cdPlayer" class="com.yykj.CDPlayer">
                <!--name這個值是根據setter方法名來確定的,所以手動裝配setter是必須有的-->
                <property name="cd" ref="cd"/>
        </bean>
現在我們使用自動裝配,不需要新增<porperty>屬性。

這是CDPlayer類:

package com.yykj;

public class CDPlayer {

    private CD cd;
/*    byName自動裝配以及手動裝配都與setter方法名有關,與屬性無關。
    byType自動裝配與setter中的引數型別有關*/
    public void setCd(CD cd) {
        this.cd = cd;
    }

    public void play(){
        cd.Play();
    }
}

測試類:

package com.yykj;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
//在測試時,不啟動伺服器,所以不會載入web.xml,要手動初始化spring配置檔案
@ContextConfiguration(locations = "classpath*:applicationContext.xml")
public class TestCD {

    @Test
    public void CDPlayerTest(){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");//獲取上下文
        CDPlayer cdPlayer = context.getBean(CDPlayer.class);
        cdPlayer.play();
    }
}

自動裝配有兩種方式:

1.byName

在spring配置檔案的<beans>標籤中加入程式碼:dafault-autowire="byName"

被裝配類中的setter方法還是需要的,因為是byName,所以setter方法名要與bean的id對應,比如bean的id為cd,那麼setter方法名為setCd。

2.byType

在spring配置檔案的<beans>標籤中加入程式碼dafault-autowire="byType"。

被裝配類中的setter方法的引數型別要與bean的class的型別一樣,才能自動裝配到。

注意:以上兩種自動裝配方法本質上都是通過反射,構造出對應的setter方法,然後執行setter方法。

相關推薦

Spring自動裝配byNamebyTypeSpring入門

在使用Spring框架時,有些bean中有個成員變數是另一個bean。舉個實際的例子,比如說CDPlayer類(CD播放器類)中有一個屬性是CD(介面),代表著CDPlayer可以放各種CD,可以例項

spring自動裝配@Qualifier註解的使用

當存在兩個型別一致的bean時,將會有什麼情況出現。我們一起來看看下面的例子:例子說明:如果已經看了上一篇教程,可以直接跳到第二步第一步:建立beanCustomer類package com.main.autowrite.autowired.annotation; imp

spring自動裝配aop的理解

round back red creat ram pre uid ride .get 1.自動裝配,有用到這個自動裝配的時候,就去掃描包,[email protected]/* */@Bean的自動實例。 package bean; import org.

Spring中Bean的自動裝配@Resource、@Inject

Spring還支援使用@Resource(JSR250)和@Inject(JSR330)[java規範的註解]  *         @Resource:  *             可以和@Autowired一樣實現自動裝配功能;預設是按照元件名稱進行裝配的;  *   

spring自動裝配通過java實現裝配

ati 三方庫 autowired 模式 限定 程序 str primary java實現 1.組建掃描 在類上添加註解@Component註解可以實現組建掃描 @Component public class A{ ... } 2.自動裝配 通過在屬性上或者方

102. Spring BootCommandLineRunnerApplicationRunner從零開始學Spring Boot

 需求緣起:在有【Spring Boot啟動載入資料CommandLineRunner】文章中介紹了CommandLineRunner的使用,有人評論說實現ApplicationRunner介面也可以,那麼本節就是要介紹ComandLineRunner和Applicatio

spring自動裝配

system test .org byname color public save cut 一個 1. 自動裝配: byName或byType 2. spring.xml中設置全局是byName自動裝配 <?xml version="1.0" encoding="

Spring--自動裝配

getaddr set 根據 執行 autowired wire car map override XML 配置裏的 Bean 自動裝配 Spring IOC 容器可以自動裝配 Bean. 需要做的僅僅是在 <bean> 的 autowire 屬性裏指定自動裝

Spring自動裝配Bean詳解

att spa bject 快速 個數 就會 否則 strong pro 1. Auto-Wiring ‘no’ 2. Auto-Wiring ‘byName’ 3. Auto-Wiring ‘byType 4. Auto-Wirin

Spring自動裝配Bean——xml方式與註解方式

自動裝配的概念 在Spring使用中,我們在xml配置檔案通過元素或元素的ref屬性向bean注入另外的依賴bean。 如果使用自動裝配(autowiring) ,就可以減少甚至消除配置元素和元素。 設定元素的autowire屬性就可以設定bean的自動裝配模式。自動裝配有5種模式。

Spring Boot學習LogbackLog4j2整合與日誌發展史

一、簡介 Java知名的日誌有很多,比如:JUL、Log4j、JCL、SLF4J、Logback、Log4j2,那麼這些日誌框架之間有著怎樣的關係?誕生的原因又是解決什麼問題?下面一起來看。 1.1 JUL Java有自己的日誌框架JUL(Java Util Logging)在java.

spring 自動裝配bean

no – 預設情況下,自動配置是通過“ref”屬性手動設定 <bean id="customer" class="com.yiibai.common.Customer" autowire=""> <property name="person" ref="person" />

第五講:5.1 Spring 自動裝配

一,通過名字自動注入 1,複製spring40203 改名為spring40204,修改beans.xml, xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework

Java redirect forward整理

轉自:https://blog.csdn.net/qiuzhi__ke/article/details/50951117 return new ModelAndView(new RedirectView(this.getViewPage()));  return new ModelAn

Java的註解機制——Spring自動裝配的實現原理

  使用註解主要是在需要使用Spring框架的時候,特別是使用SpringMVC。因為這時我們會發現它的強大之處:預處理。   註解實際上相當於一種標記,它允許你在執行時(原始碼、文件、類檔案我們就不討論了)動態地對擁有該標記的成員進行操作。   實現註解需要三個條件(我們討論的是類似於Spring自動裝

Spring自動裝配報空指標異常

這幾天在學Spring的自動裝配,自己動手做一個小專案,但是被一個空指標異常卡住了。 啟動的時候彈出index.jsp,這是一個登陸頁面: <%@ page language="java" contentType="text/html; charset

多執行緒FutureCallable高效能應用場景java.util.concurrent

業務場景: 如查一個數據集合,第一頁至第一百頁,返回總頁數的總結集,然後匯出。 一次需要limit 0 10000,這樣,一個SQL查詢出非常慢。 但用100個執行緒,一個執行緒只查limit0 10 就非常快了, 利用多執行緒的特性,返回多個集合,在順序合併成總集合。

spring boot 系列六:深入理解spring boot的自動配置

我們知道,spring boot自動配置功能可以根據不同情況來決定spring配置應該用哪個,不應該用哪個,舉個例子: Spring的JdbcTemplate是不是在Classpath裡面?如果是,並且DataSource也存在,就自動配置一個JdbcTemplate的Bean Thymeleaf是不

Spring原始碼學習BeanFactoryFactoryBean

今天在學習Spring原始碼的時候,發現了spring中不僅僅有BeanFactory,還有FactoryBean,突然覺得分不清這兩者之間有什麼不同,難道僅僅是名字嗎?但是從名字上我們也能看出一些端

HbaseTemplate配置進階:利用Spring自動裝配載入HbaseTemplate

<?xml version="1.0" encoding="UTF-8"?>      <beans xmlns="http://www.springframework.org/schema/beans"      xmlns:xsi="http://www.w3.org/2001/XMLS