码迷,mamicode.com
首页 > 编程语言 > 详细

Spring笔记——11.“零配置”支持

时间:2015-09-02 10:49:37      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:spring   注解   

我们也可以使用Annotation来代替XML配置文件。似乎注解是主流啊!


搜索Bean类

我们可以使用注解来为架构指明各个java类都是什么。@Component标注为一个普通的Spring Bean类。@Controller标注一个控制器组件类。@Service标注一个业务逻辑组件类。@Repository标注一个DAO组件类

有了这些注解,架构已经能够知道那都是些什么java类了。接下来我们还要告诉架构去哪里搜索这些。在xml中增加如下一行,架构就能自动地去扫描com.cm的各个子包下的java类,并把包含的所有java类都当场bean处理。bean的id是各个类的类名首字母小写,其他字母保留。或者也可以@Component("axe")指定bean实例名。

<context:component-scan base-package="com.cm"/>

此外component-scan也可以有include-filter和exclude-filter来指定Spring Bean类型。type允许我们设定annotation,assignable,regex和aspectj四中过滤器。expression指定过滤器所需要的表达式。


指定Bean的作用域

直接使用@Scope("prototyep")来标定bean的作用域。


使用@Resource配置依赖

@Resource(name="stoneAxe")来配置当前bean的依赖,相当于xml中的ref。这个注解要放在setAxe方法前面以表示stoneAxe是setAxe的一个参数。

如果直接让@Resource修饰成员变量axe,那么连setAxe方法都不需要。当修饰setAxe时,有些时候可以省略name属性,而直接根据setAxe去找有没有axe这个bean。有的话就传入对象。当修饰成员变量时,name默认与该实例变量属性同名


生命周期行为

@PostConstruct和@PreDestroy可以修饰两个方法用来指定bean的生命周期。它们就相当于xml中bean的init-method和destroy-method两个属性。


Spring3.0新特性

@DependsOn可以修饰bean类或者方法,用于指定强制初始化其它bean。如下:

@DependsOn({"steelAxe","abc"})
@Component
public class Chinese implements Person{}

上述注释会要求Spring在初始化Chinese之前先初始化steelAxe和abc这两个bean。

@Lazy可以用于指定该bean的预初始化行为,是不是要架构自动初始化它。用true或者false参数指定。

Spring4.0新特性

@Autowired注解用来指定自动装配,可以修饰set方法,普通方法,实例变量和构造器。修饰set时默认采用byType自动装配,自动搜索容器中与set需要的类型一样的bean并传入。如果找到多个就发生异常。没有找到就什么也不错,也不报错。

当修饰普通方法时,架构会去看能否在容器中为方法的形参找到一个匹配的bean,如果每个形参都能找到就自动执行方法。

修饰实例变量时,会试图将容器中的与实例变量匹配的bean设置为该实例变量的值。如果是一个实例变量数组,那么久找到所有匹配的bean,传入这个数组。

@Qualifier允许通过bean的id精确配置。不常用。不光可以修饰实例变量,还可以修饰形参。

public void setAxe(@Q(“steelAxe”) Axe axe)

本文出自 “指尖轻飞” 博客,谢绝转载!

Spring笔记——11.“零配置”支持

标签:spring   注解   

原文地址:http://mengcao.blog.51cto.com/9395052/1690650

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!