软件151 朱实友
(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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!--配置bean的ID,Class类全名等属性,在标签中还会有property等子标签均与该bean相关(需要根据bean来设置)-->
<bean id="..." class="...">
</bean>
<bean id="..." class="...">
</bean>
</beans>
例如:
<bean id="greetingServiceImpl" class="cn.csdn.service.GreetingServiceImpl">
<property name="say">
<value>你好!</value>
</property>
</bean>
对应的Bean的GreetingServiceImpl:
package cn.csdn.service;
public class GreetingServiceImpl implements GreetingService {
/**私有属性*/
private String say;
@Override
public void say() {
System.out.println("你打的招呼是:"+say);
}
public void setSay(String say){
this.say=say;
}
该类继承的接口GreetingService:
package cn.csdn.service;
public interface GreetingService {
void say();
}
那么何为Spring的IoC控制反转呢?
我们来创建一个JUnit测试类:
package cn.csdn.junit;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import cn.csdn.service.GreetingService;
public class GreetingTest {
/**测试GreetingServiceImpl的方法*/
@Test
public void test1(){
/**加载spring容器 可以解析多个配置文件 采用数组的方式传递*/
ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
/**IOC的控制反转体现*/
GreetingService greetingService = (GreetingService) ac.getBean("greetingServiceImpl");
greetingService.say();
}
}
在测试类中我们看到想要实现IoC的控制反转,首先应该加在容器:
加在容器的写法有以下几种:
① 可以同时配置多个XML描述文件
ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
② 只能描述当前项目路径下的一个XML描述文件
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
③ 使用匹配的方法在路径下寻找符合条件的XML描述文件
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:app*.xml");
然后,我们需要通过IoC的反转机制获得Bean的对象:
GreetingService greetingService = (GreetingService) ac.getBean("greetingServiceImpl");
最后,我们通过获得Bean对象调用Bean中的方法,输出如下:
打的招呼是:你好!