Spring初学文档

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Spring2.5注释驱动

8.4.1 Spring2.5注释驱动

注释语法越来越多的被业界所使用,并且注释配置相对于 XML 配置具有很

多的优势:它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和Java 代码放在一起,有助于增强程序的内聚性。而采用独立的 XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。因此在很多情况下,注释配置比 XML 配置更受欢迎,注释配置有进一步流行的趋势。Spring 2.5 的一大增强就是引入了很多注释类,现在您已经可以使用注释配置完成大部分 XML 配置的功能。

在使用注释配置之前,先来回顾一下传统上是如何配置 Bean 并完成 Bean 之间依赖关系的建立。

代码清单1 Foo.java Foo对象有一个String类型的name属性.

package ;

public class Foo {

private String name;

public String toStirng(){

return"Foo Name is :" + ;

}

Set和get方法

}

代码清单2 Bar.java Bar对象有一个String类型的add属性.

package ;

public class Bar {

private String add;

public String toStirng(){

return"Bar Add is :" + this.add;

}

Set和get方法

}

代码清单3 Main.java Main对象有两个属性分别是Foo和Bar package ;

public class Main {

private Foo foo;

private Bar bar;

public String toString(){

return"Main : [" + +" "+ + "]";

}

Set和get方法

}

代码清单4 配置文件spring-config-beans.xml

代码清单 5 Test.java Test类用于初始化Spring容器并获得main对象package ;

import ;

import

ClassPathXmlApplicationContext;

public class Test {

public static void main(String[] args) {

String[] locations = {"spring-config-beans.xml"}; ApplicationContext ctx = new ClassPathXmlApplicationContext(locations);

Main main = (Main) ctx.getBean("main");

;

}

}

运行Test类控制台输出以下信息:

Main : [Foo Name is :Foo Bar Add is :Bar]

这说明Spring已经完成了Bean的创建和装配工作。

1)使用 @Autowired 注释

Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。下面我们来看一下使用 @Autowired 进行成员变量自动注入的代码:

代码清单6使用 @Autowired 注释的 Main.java,此时可以将Main.java类中的set和get方法删除

package ;

import ;

public class Main {

@Autowired

private Foo foo;

@Autowired

private Bar bar;

public String toString(){

return"Main : [" + +" "+ + "]";

}

}

Spring 通过一个 BeanPostProcessor 对 @Autowired 进行解析,所以要让

@Autowired 起作用必须事先在 Spring 容器中声明AutowiredAnnotationBeanPostProcessor Bean

代码清单 7 修改配置文件

当 Spring 容器启动时,AutowiredAnnotationBeanPostProcessor 将扫描Spring 容器中所有 Bean,当发现 Bean 中拥有 @Autowired 注释时就找到和其匹配(默认按类型匹配)的 Bean,并将其注入。

2)使用@Qualifier 注释

Spring 允许我们通过 @Qualifier 注释指定注入 Bean 的名称,这样就不会产生注入错误了,请看下面代码清单:

代码清单8 修改Main.java类中的foo属性注释增加注释@Qualifier("foo1") public class Main {

@Autowired

相关文档
最新文档