通过xml配置自动装配Bean
1.创建一个简单的类test,作为被调用的Spring Bean。1
2
3
4
5
6
7
8
9
10
11
12
13
14package cn.zhenta.www.service.impl;
public class test
{
private String sex;
public void setSex(String sex) {
this.sex = sex;
}
public void pri(){
System.out.println("hi " + sex);
}
}
其中test类有一个sex的成员属性,两个方法(至于为什么有个setSex的方法,在第三点进行解释)。我们要实现的是另一个类通过xml自动装配这个类(Bean),来调用这个类的pri方法。所以我们再创建一个test1类,作为执行者。
2.创建执行的类test1,进行调用test的pri方法。
1 | package cn.zhenta.www.service.impl; |
被调用的类test和调用的类test1都创建好了,其中test.xml对应的是xml配置文件名称,helloBean对应的是test.xml配置文件中Bean的id,pri()即为test的pri方法,仅仅通过这两句话就可以不用实例化test类,即可调用test类的方法,怎么做到的呢?这就需要用到我们Spring的自动装配了,首先需要配置xml文件。
3.创建text.xml配置文件1
2
3
4
5
6
7
8
9
10<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="helloBean" class="cn.zhenta.www.service.impl.test">
<property name="sex" value="xsx" />
</bean>
</beans>
配置文件写好了,那配置文件里面的内容是什么意思呢?让我们慢慢道来,首先
property的一般用法:1
2
3<bean id="playerDataManager" class="com.cp.game.PlayerDataManager" init-method="init" scope="singleton">
<property name="sleepTime" value="${app.dispatcher.sleepTime}" />
//从外部的property文件中用el表达式获取值
<property name="sleepTime" value="333" />
//直接在赋值
<property name="playerDao" ref="playerDao" />
引用其他bean对象。 ref的值是其他bean的id名
4.运行结果
运行test1后,输出的内容是:hi xsx。
5.补充
两个Bean,person 和 ability。1
2
3
4
5
6
7
8
9
10
11
12
13
14package com.yiibai.common;
public class Person
{
private Ability ability;
//...
}
package com.yiibai.common;
public class Ability
{
private String skill;
//...
}
通过装配 hre装配1
2
3
4
5
6
7
8
9
10
11
12<bean id="person" class="com.yiibai.common.Person">
<property name="ability" ref="invisible" />
</bean>
<bean id="invisible" class="com.yiibai.common.Ability" >
<property name="skill" value="Invisible" />
</bean>
```
输出:
Person [ability=Ability [skill=Invisible]]
注意:想要自动装载,需要获Spring的上下文!
ApplicationContext a = new ClassPathXmlApplicationContext(“test.xml”);
test obj = (test) a.getBean(“helloBean”);`
下一篇更新使用注解自动装载的时候,就不需要使用代码来获取了。欢迎加入JAVA学习群949419296,一起交流!