【Spring】使用Spring开发第一个应用          返回主页

Spring框架是基于依赖注入核心机制、基于AOP的优秀的MVC框架,具有低侵入的特点,因此不论是客户端还是web应用都可以轻松使用它进行构建。

 在Spring容器中,所有的对象都会被当成Spring核心容器管理的对象。在Spring容器中,一切对象都成为bean。

使用Spring很容易,下载并解压spring-framework-4.0.4.RELEASE之后将其中的libs中的jar包(21个)以及common-logging的jar包添加进项目的build path中即可开始应用的开发。

这里以一个简单的SE应用为例介绍基于Spring的应用开发流程。

新建一个java应用命名为Spring01

添加Spring的libs中的jar以及common-logging.jar到build-path

建立类Axe.java

Axe.java定义一个方法返回一个字符串

package com.snowalker.spring01;

public class Axe {
    public String chop() {
        return "使用斧头砍柴";
    }
}

建立类Person.java

Person.java定义一个setter方法,并调用Axe的chop方法

package com.snowalker.spring01;

public class Person {

    private Axe axe;
    //设值注入所需setter
    public void setAxe(Axe axe) {
        this.axe = axe;
    }
    /**
     * Person依赖Axe
     */
    public void useAxe() {
        System.out.println("我打算去砍柴点火");
        System.out.println(axe.chop());
    }
}

建立测试类BeanTest.java

BeanTest.java类使用ApplicationContext加载配置文件,ApplicationContext是Spring容器最常用的接口,该接口下的实现类ClassPathXmlApplicationContext从类加载路径下搜索配置文件,并根据配置文件创建Spring接口

package test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.snowalker.spring01.Person;

public class BeanTest {

    public static void main(String[] args) {
        //创建Spring容器
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        //获取id为person的Bean
        Person person = context.getBean("person", Person.class);
        //调用useaxe方法
        person.useAxe();
    }
}

配置文件beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
    <bean id="person" class="com.snowalker.spring01.Person">
        <property name="axe" ref="axe"/>
    </bean>
    <bean id="axe" class="com.snowalker.spring01.Axe"/>
    <bean id="win" class="javax.swing.JFrame"/>
    <bean id="date" class="java.util.Date"/>    
</beans>

对配置文件说明:

<bean../>:元素默认以反射方式调用该类的无参构造器

<property../>:子元素驱动Spring执行setter方法

使用Spring框架之后的最大改变之一就是:程序不再使用new调用构造器创建java对象,所有的Java对象都由Spring容器负责创建。

运行结果

二月 16, 2016 11:09:04 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@377dca04: startup date [Tue Feb 16 23:09:04 CST 2016]; root of context hierarchy
二月 16, 2016 11:09:04 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [beans.xml]
我打算去砍柴点火
使用斧头砍柴

小结

这次介绍了使用Spring开发一个小应用的基本过程;

Spring加载类主要是通过反射特性的,因此反射特性仍有必要进行深入的掌握。