上一篇文章描述了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注入呢?
①、使用 <construcor-arg>
,
<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>
注:仅个人理解,望指点与交流,共同学习。