1. 程式人生 > >Spring基礎(2)——Spring中裝入bean的幾種方法

Spring基礎(2)——Spring中裝入bean的幾種方法

上一篇文章描述了spring裝配bean的自動化裝配技術 下面主要描述一下spring裝配bean的顯示配置,其中顯示配置有兩種方案,Java配置和XML。 為啥需要有顯示配置的?其實主要是考慮到第三方外掛,我們無法通過標註@Component和@Autowired 註解進行裝配。 1、Java配置,宣告Java配置類的註解是@Configuration, 在Java配置類中宣告一個簡單的bean,

@Bean
public CompactDisc sgtPeppers(){
	return new SgtPeppers();
}

@Bean 註解告訴spring這個方法返回一個物件,並且該物件要註冊在spring應用上下文中的bean, 在spring 中bean的ID為方法名字,我們也可以通過@Bean(name=“你自己要定義的名字”)指定自己要設定的唯一ID名字 (1) 通過java配置實現注入, ①引用建立bean

@Bean
public CDplayer cdPlayer(){
return  new CDPlayer(sgtPeppers());
}

非引用建立bean(最為常用的方法,而這種方法和@Autowired註解方法很類似)

@Bean
public CDplayer cdPlayer(CompactDisc  compactDisc ){
return  new CDPlayer(compactDisc);
}

2、通過Xml裝配bean(最原始的)

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
</beans>

最簡單的一個xml配置,可以使用spring tool suit 工具建立一個spring的配置檔案,自己選擇可配置的名稱空間。現在宣告一個bean

<bean id="compactDisc " class="com.ssm.interImpl.SgtPeppers"/>    

建立這個bean的類通過class屬性來指定的,並且要使用全限定的類名。 (1)那麼如何使用構造器方式在xml中實現DI注入呢? ①、使用,

<bean id="cdPlayer" class="com.ssm.interImpl.CDPlayer">    
	<constructor-arg ref="compactDisc ">
</bean>

②、使用c-名稱空間 在使用名稱空間,首先要引入宣告c-名稱空間,然後就可以來宣告構造器的引數

<bean id="cdPlayer" class="com.ssm.interImpl.CDPlayer"
   c:cd-ref="compactDisc "/>    

使用c-名稱空間比使用程式碼更見簡潔,這裡要注意c:cd-ref="compactDisc " 中的cd,cd代表的是構造器引數名。其中還可以按照引數的位置索引,c:0-ref="compactDisc ",如果只有一個構造器則使用 c:-ref=“sgtPeppers”,

(2)如何將字面量字注入到構造器中,首先定義一個類

public class BlankDisc implements CompactDisc{
	private String title;
	private String artist;
	public BlankDisc(String title,String artist){
	this.title=title;
	this.artist=artist;
	}
}
通過  <construcor-arg>進行注入
<bean id="compactDisc " class="com.ssm.interImpl.BlankDisc ">
  <constructor-arg value="Lonly Hearts Club ">
  <constructor-arg  value="The Beatles ">
</bean>    

使用名稱空間對引數進行注入

 <bean id="compactDisc " class="com.ssm.interImpl.BlankDisc ">
	c:_title="Lonly Hearts Club"
	c:_artist="The Beatles"
</bean>