首页 > 代码库 > spring IOC实验

spring IOC实验

                 软件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">

<!--配置beanIDClass类全名等属性,在标签中还会有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>

对应的BeanGreetingServiceImpl

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();

}

那么何为SpringIoC控制反转呢?

我们来创建一个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中的方法,输出如下:

打的招呼是:你好!

spring IOC实验