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>