Spring自動裝配之byName和byType【Spring入門】
在使用Spring框架時,有些bean中有個成員變數是另一個bean。舉個實際的例子,比如說CDPlayer類(CD播放器類)中有一個屬性是CD(介面),代表著CDPlayer可以放各種CD,可以例項化為Mayday(五月天的歌)。
原來我們需要在配置CDPlayer這個bean的時候新增<porperty>,手動裝配。程式碼如下:
現在我們使用自動裝配,不需要新增<porperty>屬性。<bean id="cd" class="com.yykj.Mayday" /> <bean id="cdPlayer" class="com.yykj.CDPlayer"> <!--name這個值是根據setter方法名來確定的,所以手動裝配setter是必須有的--> <property name="cd" ref="cd"/> </bean>
這是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自動裝配之byName和byType【Spring入門】
在使用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 Boot之CommandLineRunner和ApplicationRunner【從零開始學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學習之Logback和Log4j2整合與日誌發展史
一、簡介 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
多執行緒之Future和Callable【高效能應用場景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原始碼學習之BeanFactory和FactoryBean
今天在學習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