Spring框架

说明:摘自Spring MVC学习指南

Spring框架是一个开源的企业应用开发框架。

  1. 依赖注入

Spring的Core和Bean两个模块,提供了依赖注入解决方案。很多框架都采用了依赖注入技术,那么,什么是依赖注入技术?

举例说明:有两个组件A和B,A依赖B。假定A是一个类,且A有一个方法importantMethod使用到了B,如下:

1 public class A
2 {
3     public void importantMethod()
4     {
5         B b = ... // get an instance of B
6         b.userfulMethod ();
7     }
8 }

要使用B,类A必须获得组件B的实例引用。若B是一个具体类,则可以通过new关键字直接创建B实例。但是,如果B是接口,且有多个实现,则问题变得复杂;固然我们可以任意选择接口B的一个实现类,但这也意味着A的可重用性大大降低了,因为无法采用B的其它实现。

 

依赖注入是这样处理此类场景的,接管对象的创建工作,并将该对象的音乐注入需要的该对象的组件。以上述例子为例,依赖注入框架会分别创建对象A和对象B,将对象B注入到对象A中。

 

为了能让框架进行依赖注入,程序员需要编写特定的set方法或者构建方法。例如:

 1 public class A
 2 {
 3 private B b;
 4 public void importantMethod()
 5 {
 6 // no need to worry aboud creating B anymore
 7 // B b = ... // get an instance of B
 8 b.usefulMethod();
 9 }
10 
11 public void setB(B b)
12 {
13 this.b = b;
14 }
15 }

修改后的A新增了一个set方法,该方法将被框架调用,以注入一个B的实例。由于对象依赖由依赖注入,类A的importantMethod方法不在需要在调用B的usefulMethod方法钱去创建一个B的实例。

当然,也可以采用构造器的方法注入,如:

public class A
{
    private B b;
    
    public A (B b)
    {
        this.b = b;
    }

    public void importantMethod()
    {
        // no need to worry about creating B any more
        // B b = ... // get an instance of B
        b.usefulMethod();
    }
}

本例中,Spring会先创建B的实例,再创建实例A,然后把B注入到实例A中。

 

通过提供一个控制反转容器(或者依赖注入容器),Spring为我们提供一种可以“聪明”地管理Java对象依赖关系的方法。其优雅之处在于,程序员无需了解Spring框架的存在,更不需要引入任何Spring类型。

 

从1.0版本开始,Spring就同时支持setter和构造器方式的依赖注入。从2.5版本开始,通过Autowired注解,Spring支持基于field方式的依赖注入,但缺点是程序必须引用org.springframework.beans.factory.annotation.Autowired,这对Spring产生了依赖,这样,程序无法直接迁移到领一个依赖注入容器。

 

使用Spring,程序几乎将所有重要对象的创建工作移交给了Spring,并配置如何注入依赖。

1.1 XML配置文件

1.2 Spring控制反转容器的使用

1.2.1通过构造器创建一个bean实例

1.2.2通过工厂方法创建一个bean实例

1.2.3Destroy Method的使用

1.2.4向构造器传递参数

1.2.5Setter方式依赖注入

1.2.6构造器方式依赖注入

 

posted on 2016-02-02 23:47  reeser  阅读(215)  评论(0编辑  收藏  举报