Spring学习

Mar 29, 2016


  • 参考书目:《Spring In Action》
  • IDE:Intellij Idea

Spring框架已经是基于POJO的轻量级开发框架的领导者,其应用已十分广泛,它的根本使命是简化Java的开发过程。

Spring关键特性范例

Spring的四种关键策略:

  • 基于POJO(Plain Ordinary java Object)的轻量级和最小侵入性编程
  • 通过依赖注入(DI)和面向接口实现松耦合
  • 基于切面(AOP)和惯例进行声明式编程
  • 通过切面和模版减少样板式代码

这些特性或策略看起来总是让人头疼,还是通过一些例子来解释Spring的关键特性

依赖注入和控制反转

依赖注入的关键作用在于解耦合,将类与类之间的对象引用进行统一管理,其实现原理是Java的反射机制。

下面举一个人骑车的例子:

People类:

 1	package beijing.huangh.demos;
 2
 3	/**
 4	 * Created by huanghuan on 16/3/29.
 5	 */
 6	public class People {
 7	    private Bike bike;
 8
 9	    public People(Bike bike) {
10	        this.bike = bike;
11	    }
12
13	    public void ridingBike() {
14	        if (bike != null) {
15	            bike.ridingBike();
16	        }
17	    }
18	}

Bike类:

 1	package beijing.huangh.demos;
 2
 3	/**
 4	 * Created by huanghuan on 16/3/29.
 5	 */
 6	public class Bike {
 7	    public void ridingBike() {
 8	        System.out.println("riding bike!!!");
 9	    }
10	}

通过xml文件进行装配:

 1	<?xml version="1.0" encoding="UTF-8"?>
 2	<beans xmlns="http://www.springframework.org/schema/beans"
 3	       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4	       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 5
 6	       <bean id="bike" class="beijing.huangh.demos.Bike"/>
 7	       <bean id="people" class="beijing.huangh.demos.People">
 8	              <constructor-arg ref="bike"/>
 9	       </bean>
10	</beans>

调用测试类:

 1	package beijing.huangh.test;
 2
 3	import beijing.huangh.demos.People;
 4	import org.springframework.context.ApplicationContext;
 5	import org.springframework.context.support.ClassPathXmlApplicationContext;
 6
 7	/**
 8	 * Created by huanghuan on 16/3/29.
 9	 */
10	public class DemoTest {
11	    public static void main(String[] args) {
12	        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
13	        People people = (People) context.getBean("people");
14	        people.ridingBike();
15	    }
16	}

输出结果:

依赖注入范例

从这个范例中我们可以看出,类对象的构建和相互引用都由Spring的配置文件控制,people对象所需要的bike对象,也是由Spring框架通过构造器去注入。这样的方式咋看起来确实能够降低项目的复杂度,开发起来更加便捷,同时可以有效重用对象。但可以预见的是,当一个项目较为庞大,有多达数百个类,在这种情况下,如果依旧采用上诉的配置文件装配方法,整个配置文件将显得十分庞杂。而且IDE往往对框架的支持有限,要知道一个对象被注入了什么其它对象,恐怕只能进行不断的file search了,Spring是否能解决我所说的问题了,我将在接下来的学习中寻找答案。


上一篇博客:Linux命令大全 Part Two
下一篇博客:算法练习