NO.4 Spring IOC 开发步骤
一.搭建Spring开发环境
(1)在pom.xml中引入所需的jar包
log4j,springframework
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
</dependencies>
(2)配置文件(应用上下文)
在resource下建一个包spring,写一个xml配置文件,命名为applicationContext.xml。
像我们之前所谈到的Web,DataAccess等java类,对于Spring来说,没有任何区别,统称为JavaBean,针对于IOC容器来说,也都是JavaBean,就像之前我们所建立的水果工厂,apple,orange都属于水果一样,现在将这些水果,统统以bean的形式放到IOC容器中。
这里,我们需要重复提出IOC(控制反转),之前是自己生产,现在有一个工厂,控制着bean的生产,控制的掌控者发生了反转。现在则是将控制权交给IOC容器,通过bean标签将JavaBean(所有Java类的统称)配置到IOC容器中。
bean标签两个重要的属性:
1.class 引用JavaBean的全类名
2.id 为定义一个id,此ID不能在IOC容器中重复,若重复则会报错,通常首字母小写
这样,我们就将这个Apple类初始化到了IOC容器中
<?xml version="1.0" encoding="UTF-8"?>
<!-- xmlns: xml name space xml命名空间
xmlns与xsd文件成对出现
xsd文件:限制标签的配置
web.xml中是dtd文件控制标签配置
Gson 一种数据格式,数据交互方式,数据的载体
在Gson之前,可通过xml承载数据,但xml解析较麻烦,之后就不再使用了,现在xml多做为配置文件使用
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd ">
<bean id="apple" class="com.xt.spring.ioc.ore.Apple" init-method="appleInit" destroy-method="appleDestroy" ></bean>
</beans>
初始化之后,就可以从这个工厂中获取这个对象了。
首先在java类中需要先获得这个工厂,再获取所需要的对象。
二.写一个测试类
ApplicationContext接口的两个可创建对象的实现类ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,前者是相对路径(加载xml文件的路径相对于ClassPath,将resource当做绝对目录),后者是绝对路径(从本地的根目录开始,需要从某个盘开始)。
Apple实体bean中没有构造方法,工厂根据图纸,通过反射创建对象。
package com.xt.spring.ioc.test;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.xt.spring.ioc.ore.Apple;
public class IOCTest {
//容器中的一个接口ApplicationContext,spring整个系统都是以这个接口开始的
private ApplicationContext ioc0;
@Before
public void iocInit(){
ioc0 = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
}
@Test
public void testIoc(){
//IOC容器通过JavaBean的id来获取创建的JavaBean对象
//getBean获得的是object,可强转,也可把图纸给工厂
Apple a0 = ioc0.getBean("apple",Apple.class);
a0.eat();
}
}
以上就是Spring IOC 简单的开发举例。