Spring之路-聊聊Bean装配

来源:互联网 发布:dac 单片机 编辑:程序博客网 时间:2024/06/08 10:18

Spring配置主要有三种装配机制:
1.在XML中进行显式配置;
2.在JAVA中进行显式配置;
3.隐式的bean发现机制和自动装配。

一、在XML中进行显式配置

1.创建XML配置规范

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:p="http://www.springframework.org/schema/p"  xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd">

这样,就创建了一个合法简单的Spring XML配置
2.声明一个简单的bean

  <bean id="xiaoming" class="program.CoderA">      <constructor-arg value="xiaoming" />  </bean>

id代表bean的标识,class代表生成bean的类
3.借助构造器注入初始bean
这里有两种方式进行配置:
* constructor-arg>元素
* 使用spring3.0所引入的c-命名空间

  <bean id="xiaohong" class="program.ProductManageA">    <constructor-arg ref="xiaoming" />  </bean>

spring遇到这个bean时,会创建一个ProductManageA的实例,并通过constructor-arg告知spring引用id为xiaomingbean。
通过c命名空间,首先应在xml声明其模式

xmlns:c="http://www.springframework.org/schema/c"

然后,在bean中直接声明:

  <bean id="xiaohong" class="program.ProductManageA"    c:_0-ref="xiaoming"/>

这里,直接用0代表第一个构造器参数,_是因为数字不可以作为属性第一个字符。也可以使用构造器名。
若需装配集合时,我们只需要使用标签或标签即可,
如:
<constructor-arg>
<list>
<value>..</value>
<value>..</value>
</list>
</constructor-arg>
<!-- <set>标签同理-->

4.设值注入
使用set方法注入是,使用标签即可,与使用同理,也有简化的标签p:,与c:类同。

二、在JAVA中进行显式配置

创建一个配置类,并设置bean返回规则

@Configurationpublic class ProgramConfig {    @Bean    public Coder coder(){        return new CoderA();    }    @Bean    public ProductManageA productManageA(Coder coder){        return new ProductManageA(coder);    }}

三、隐式的bean发现机制和自动装配

创建一个config JAVA类

@Configuration//代表配置类@ComponentScan//设置组件扫描public class ProgramConfig {}
@Component//创建可被发现的beanpublic class ProductManageA implements ProductManage {    private Coder coder;    @Autowired//自动装配程序员    public ProductManageA(Coder coder){        this.coder=coder;    }    @Override    public void work() {        System.out.println("万恶的PM跟码农谈需求");        coder.coding();    }}
//测试类/* @RunWith(SpringJUnit4ClassRunner.class)以便在测试开始的时候自动创建Spring的应用上下文。注解 @ContextConfiguration会告诉它需要在ProgramConfig中加载配置。*/@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes=ProgramConfig.class)public class TestProgram {    @Autowired    private ProductManageA pmA;    @Test    public final void testJavaConfig(){        pmA.work();    }}