通过xml配置自动装配Bean
1.创建一个简单的类test,作为被调用的Spring Bean。
package 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方法。
package cn.zhenta.www.service.impl;
import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
import org.springframework.context.ApplicationContext;
public class test1 {
public static void main(String[] args) {
ApplicationContext a = new ClassPathXmlApplicationContext("test.xml");
test obj = (test) a.getBean("helloBean");
obj.pri();
}
}
被调用的类test和调用的类test1都创建好了,其中test.xml对应的是xml配置文件名称,helloBean对应的是test.xml配置文件中Bean的id,pri()即为test的pri方法,仅仅通过这两句话就可以不用实例化test类,即可调用test类的方法,怎么做到的呢?这就需要用到我们Spring的自动装配了,首先需要配置xml文件。
3.创建text.xml配置文件
<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>
配置文件写好了,那配置文件里面的内容是什么意思呢?让我们慢慢道来,首先<bean></bean>声明这是个Bean,然后class即为你要配置为Bean的类的命名空间(我这里对应的是第1点的test类),id即为表示你这个Bean的标识符(自己随意起名,不冲突即可),而property作为bean的属性,也就是指一个类中的成员,既name=“sex”对应test的sex成员变量,同时这个成员必须有get和set方法(既test类中的setSex()方法,需要注意的是setXXX的XXX需要为成员变量的名字),至于为什么要有set,get方法,可以阅读Spring IOC相关知识,至于property的用法,以下列举出一些常用的。
property的一般用法:
<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。
package com.yiibai.common;
public class Person
{
private Ability ability;
//...
}
package com.yiibai.common;
public class Ability
{
private String skill;
//...
}
通过装配 hre装配
<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,一起交流!