没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
使用 Spring2.5 的 Autowired 实现注释型的 IOC
使用 Spring2.5 的 Autowired 实现注释型的 IOC
使用 Spring2.5 的新特性——Autowired 可以实现快速的自动注入,而无需在 xml 文档里面
添加 bean 的声明,大大减少了 xml 文档的维护。(偶喜欢这个功能,因为偶对 xml 不感
冒)。 以下是一个例子:
先编写接口 Man:
public interface Man {
public String sayHello();
}
然后写 Man 的实现类 Chinese 和 American:
@Service
public class Chinese implements Man{
public String sayHello() {
return "I am Chinese!";
}
}
@Service
public class American implements Man{
public String sayHello() {
return "I am American!";
}
}
@Service 注释表示定义一个 bean,自动根据 bean 的类名实例化一个首写字母为小写的
bean,例如 Chinese 实例化为 chinese,American 实例化为 american,如果需要自己改名字
则:@Service("你自己改的 bean 名")。
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<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-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config/>
<context:component-scan base-package="testspring.main"/>
</beans>
在 spring 的配置文件里面只需要加上<context:annotation-config/>和<context:component-scan
base-package="需要实现注入的类所在包"/>,可以使用 base-package="*"表示全部的类。
编写主类测试:
@Service
public class Main {
使用 Spring2.5 的 Autowired 实现注释型的 IOC
@Autowired
@Qualifier("chinese")
private Man man;
public static void main(String[] args) {
// TODO code application logic here
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
Main main = (Main) ctx.getBean("main");
System.out.println(main.getMan().sayHello());
}
public Man getMan() {
return man;
}
}
在 Man 接口前面标上@Autowired 和@Qualifier 注释使得 Man 接口可以被容器注入,当
Man 接口存在两个实现类的时候必须指定其中一个来注入,使用实现类首字母小写的字符
串来注入。否则可以省略,只写@Autowired
**********************
使用 Spring 2.5 注释驱动的 IoC 功能
注释配置相对于 XML 配置具有很多的优势:
它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如
使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关
系表字段和 PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信
息都可以通过 Java 反射机制获取。
注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在
程序开发完成后都不会调整,如果配置信息和 Java 代码放在一起,有助于增强程序的内聚
性。而采用独立的 XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配
置文件中不停切换,这种思维上的不连贯会降低开发效率。
因此在很多情况下,注释配置比 XML 配置更受欢迎,注释配置有进一步流行的趋势 。
Spring 2.5 的一大增强就是引入了很多注释类,现在您已经可以使用注释配置完成大部分
XML 配置的功能。在这篇文章里,我们将向您讲述使用注释进行 Bean 定义和依赖注入的
内容。
原来我们是怎么做的
在使用注释配置之前,先来回顾一下传统上是如何配置 Bean 并完成 Bean 之间依赖关系的
建立。下面是 3 个类,它们分别是 Office、Car 和 Boss,这 3 个类需要在 Spring 容器中配
置为 Bean:
使用 Spring2.5 的 Autowired 实现注释型的 IOC
Office 仅有一个属性:
清单 1. Office.java
package com.baobaotao;
public class Office {
private String officeNo =”001”;
//省略 get/setter
@Override
public String toString() {
return "officeNo:" + officeNo;
}
}
Car 拥有两个属性:
清单 2. Car.java
package com.baobaotao;
public class Car {
private String brand;
private double price;
// 省略 get/setter
@Override
public String toString() {
return "brand:" + brand + "," + "price:" + price;
}
}
Boss 拥有 Office 和 Car 类型的两个属性:
清单 3. Boss.java
package com.baobaotao;
public class Boss {
private Car car;
private Office office;
// 省略 get/setter
@Override
public String toString() {
使用 Spring2.5 的 Autowired 实现注释型的 IOC
return "car:" + car + "\n" + "office:" + office;
}
}
我们在 Spring 容器中将 Office 和 Car 声明为 Bean,并注入到 Boss Bean 中:下面是使用传
统 XML 完成这个工作的配置文件 beans.xml:
清单 4. beans.xml 将以上三个类配置成 Bean
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="boss" class="com.baobaotao.Boss">
<property name="car" ref="car"/>
<property name="office" ref="office" />
</bean>
<bean id="office" class="com.baobaotao.Office">
<property name="officeNo" value="002"/>
</bean>
<bean id="car" class="com.baobaotao.Car" scope="singleton">
<property name="brand" value=" 红旗 CA72"/>
<property name="price" value="2000"/>
</bean>
</beans>
当我们运行以下代码时,控制台将正确打出 boss 的信息:
清单 5. 测试类:AnnoIoCTest.java
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AnnoIoCTest {
public static void main(String[] args) {
String[] locations = {"beans.xml"};
ApplicationContext ctx =
new ClassPathXmlApplicationContext(locations);
Boss boss = (Boss) ctx.getBean("boss");
System.out.println(boss);
}
}
这说明 Spring 容器已经正确完成了 Bean 创建和装配的工作。
使用 @Autowired 注释
Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完
剩余15页未读,继续阅读
资源评论
- sxy2493430512012-10-18还在看..需要一定的springMVC 的注解基础
- dxing0072013-11-11嗯 ,挺详细,不错
- 依然核桃2013-03-06嗯 ,挺详细,不错
- 迷茫之旅2013-12-23好,有帮助,还在看
- 百度20302013-09-20不错,根据这个我总结了一篇博客呢
kevinabcj
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功