Spring中的IOC示例

时间:2023-03-08 17:01:05

Spring中的IOC示例

工程的大概内容是:

一个人在中国时用中国话问候大家,在国外时用英语问候大家。

Spring中的IOC示例

其中,

IHelloMessage是接口,用来定义输出问候信息

public interface IHelloMessage {
public String sayhello();
}

HelloWorld是接口的实现类,向用户输出  hello world  信息

public class HelloWorld implements IHelloMessage {

  @Override
public String sayhello() {
// TODO Auto-generated method stub
return "hello world";
} }

HelloChina 是接口的实现类,向用户输出 大家好  信息

public class HelloChina implements IHelloMessage{

  @Override
public String sayhello() {
// TODO Auto-generated method stub
return "大家好";
} }

Person是人物类,调用IHelloMessage接口,向用户输出问候信息

public class Person {
private IHelloMessage helloMessage; public IHelloMessage getHelloMessage() {
return helloMessage;
} public void setHelloMessage(IHelloMessage helloMessage) {
this.helloMessage = helloMessage;
}
public String sayHello(){
return helloMessage.sayhello();
} }

Main是程序的入口类,用于加载配置文件以及启动IOC容器,调用人物类,向用户输出问候信息

public class Main {

  public static void main(String[] args) {
//利用FileSystemResource读取配置文件
Resource r = new FileSystemResource("helloMessage.xml");
//利用XmlBeanFactory加载配置文件同时启动IOC容器
BeanFactory f = new XmlBeanFactory(r);
//接下来在IOC容器中获取Person类的实例
Person person = (Person) f.getBean("person");
String message = person.sayHello();
System.out.println(message);
} }

配置文件helloMessage

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloWorld" class="com.xiongda.spring.hello.HelloWorld"></bean>
<bean id="helloChina" class="com.xiongda.spring.hello.HelloChina"></bean>
<bean id="person" class="com.xiongda.spring.hello.Person">
<property name="helloMessage" ref="helloWorld"/>
</bean>
</beans>

可以看出原本的类之间是独立的,通过配置文件在他们之间建立了依赖,也就是说将控制权由原来的对象本身转移到了配置文件当中,也就是所谓的控制反转