简化Spring的xml文件配置-注解装配
来源:互联网 发布:淘宝客服改差评话术 编辑:程序博客网 时间:2024/06/06 18:28
注解装配是Spring2.5后出现的一种有趣的装配方式。它本质上与在xml文件中使用autowire属性自动装配并没有太大区别,但是它允许更细粒度的自动装配,我们可以选择地标注一个属性来对其应用自动装配。
Spring是默认禁止注解装配,所以在使用它之前,我们要在Spring配置中开启它。最简单的启用方式是使用Spring的context命名空间配置中的<context:annotation-config>元素,
这里先介绍Spring3支持的三种注解,Spring4也出来了,还没来得及看,太菜了。
还是用之前的例子:
先写一个简单的Bean
class HelloBean{ private String name; private int number; private Date date; public HelloBean(Date date, String name, int number) { this.date = date; this.name = name; this.number = number; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the number */ public int getNumber() { return number; } /** * @param number the number to set */ public void setNumber(int number) { this.number = number; } /** * @return the date */ public Date getDate() { return date; } /** * @param date the date to set */ public void setDate(Date date) { this.date = date; } }
1.使用@Autowired
首先要知道能用@Autowired标识的地方,@Autowired不仅可以标注setter方法,它还能标注需要自动装配Bean引用的任意方法,甚至可以标注构造器。同时,我们可以直接用@Autowired标注某个属性,并删除掉它的setter方法。
注意:@Autowired其实执行的是按类型装配属性,也就是byType。
在上面这个例子中,我们可以用@Autowired直接标注date属性,如下
@Autowired
private Date date;
默认情况下,如果没有bean能被装配到@Autowired所标注的属性或参数中,那装配就失败,抛出一个NoSuchBeanDefinitionException异常(这时候失败比将来抛出空指针要好)。但@Autowired有一个重要的required属性,它默认是true,也我们可以手动设为false,如下:
@Autowired(required=false)private Date date;
此时,如果Spring没有找到类型为Date的bean,那就把date属性置为null。
另一方面,如果有多个bean同时满足装配条件,@Autowired注解也是没有办法选择的,也会报错NoSuchBeanDefinitionException,此时就需配合使用@Qualifier注解。
@Autowired(required=false)@Qualifier("<span style="color:#FF0000;">date1</span>")private Date date;
@Qualifie注解会所需满足条件的bean的范围,上面的例子中,@Qualifie注解尝试注入id为“date1”的bean。
2.@Qualifie,自定义限定器的注解
Qualifie的意思就是限定词,修饰语。在这里,我们暂时只要记住它在上面那个例子中的用法就ok了。其实它的主要作用是用于创建一个自定义的限定器注解。
这个我暂时没有用到,所以就先不写啦,没用也等于没学。
3.@inject
@inject是JSR-330的核心部件,JSR-330是JCP发布java依赖注入规范,该规模让Java有了依赖注入模型。
@inject注解几乎可以完全替换Spring的@Autowired注解,也可以用来自动装配属性、方法和构造器,不同之处在于@inject没有required属性。
@inject也会像@Autowired由于匹配到多个bean导致歧义性,相对于@Autowired所对应的@Qualifie,@inject所对应的@Name。
@Inject@Name("date1")private Date date;
4.注解可以为Spring的Bean自动装配其他Bean的引用,我们同样能够使用注解来装配简单的值,有时候这个用的更多一些。Spring3.0引入了@Value,它是一个新的装配注解,可以让我们使用注解装配String类型的值和基本类型的值,例如int,boolean等。
@Value("小苹果")private String song;
但是@Value真正强大之处在于它可以根据SqEL表达式来进行动态的求值计算,虽然我也没用到过。
@Value("#{systemProperties.myFavoriteSong}")private String song;
- 简化Spring的xml文件配置-注解装配
- 简化Spring XML配置---使用注解装配
- 简化Spring的xml文件配置-自动装配Bean属性
- 简化Spring的XML配置(二)——使用注解装配bean
- 使用注解+xml配置完成spring的bean的装配
- 简化Spring的XML配置(一)——自动装配bean属性
- spring注解简化配置
- 简化Spring的xml文件配置-自动检测bean
- Spring XML配置--使用注解装配(@Atutowired、@Inject、@Resource)
- Spring XML配置--使用注解装配(@Atutowired、@Inject、@Resource)
- Spring XML配置--使用注解装配(@Atutowired、@Inject、@Resource)
- Spring XML配置--使用注解装配(@Atutowired、@Inject、@Resource)
- 04 Spring 注解配置,简化xml配置,@Service、@Autowired简介
- 使用spring注解 自动装配以及自动扫描机制 实现零xml配置的前提
- 【Java.Spring.Core】【IoC】基于注解的Bean装配(非XML配置)
- 使用spring注解 自动装配以及自动扫描机制 实现零xml配置的前提
- 使用spring注解 自动装配以及自动扫描机制 实现零xml配置的前提
- 使用spring注解 自动装配以及自动扫描机制 实现零xml配置的前提
- HDU1007 Quoit Design
- 不可不知的收件箱之外的惊喜
- 关于win8.1系统的网络用一段时间就会受限的原因及解决方法
- Linux vlan 功能模块分析
- C程序代码的内存布局
- 简化Spring的xml文件配置-注解装配
- SDUT-14级训练1-Puzzle
- Android NDK开发(九)——应用监听自身卸载升级版,使用Inotify监听安装目录
- [leetcode] Dungeon Game
- left join on and 与 left join on where的区别
- Jquery中最容易出错的赋值问题
- ios state resotre
- 解决没有/proc/bus/usb目录问题
- Android新的menu实现——ActionMode