天天看点

NO.4 Spring IOC 开发步骤

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 简单的开发举例。

继续阅读