- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
spring注解注入示例详解.pdf
一、各种注解方式
1.@Autowired 注解(不推荐使用,建议使用@Resource)
@Autowired 可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。
@Autowired 的标注位置不同,它们都会在Spring 在初始化这个bean 时,自动装配这个属
性。要使@Autowired 能够工作,还需要在配置文件中加入以下
Xml 代码
1. bean
class=org.springframework.beans.factory.annotation.AutowiredAnnotati
onBeanPostProcessor /
2. @Qualifier 注解
@Autowired 是根据类型进行自动装配的。例如,如果当Spring 上下文中存在不止一个
UserDao 类型的bean 时,就会抛出BeanCreationException 异常;如果Spring 上下文中不
存在UserDao 类型的bean,也会抛出BeanCreationException 异常。我们可以使用
@Qualifier 配合@Autowired 来解决这些问题。如下:
1). 可能存在多个UserDao 实例
Java 代码
1. @Autowired
2. @Qualifier(userServiceImpl)
3. public IUserService userService;
或者
Java 代码
1. @Autowired
2. public void setUserDao(@Qualifier(userDao) UserDao userDao) {
3. this.userDao = userDao;
4. }
这样,Spring 会找到id 为userServiceImpl 和userDao 的bean 进行装配。
2). 可能不存在UserDao 实例
Java 代码
1. @Autowired(required = false)
2. public IUserService userService;
3. @Resource 注解
JSR-250 标准注解,推荐使用它来代替Spring 专有的@Autowired 注解。@Resource 的
作用相当于@Autowired,只不过@Autowired 按byType 自动注入,而@Resource 默认按byName
自动注入罢了。@Resource 有两个属性是比较重要的,分别是name 和type,Spring 将
@Resource 注解的name 属性解析为bean 的名字,而type 属性则解析为bean 的类型。所以
如果使用name 属性,则使用byName 的自动注入策略,而使用type 属性时则使用byType
自动注入策略。如果既不指定name 也不指定type 属性,这时将通过反射机制使用byName
自动注入策略。要使@Autowired 能够工作,还需要在配置文件中加入以下:
Xml 代码
1. bean
class=org.springframework.context.annotation.CommonAnnotationBeanPos
tProcessor /
@Resource 装配顺序:
a.如果同时指定了name 和type,则从Spring上下文中找到唯一匹配的bean进行装配,
找不到则抛出异常
b.如果指定了name,则从上下文中查找名称(id)匹配的bean 进行装配,找不到则抛出
异常
c.如果指定了type,则从上下文中找到类型匹配的唯一bean 进行装配,找不到或者找
到多个,都会抛出异常
d.如果既没有指定name,又没有指定type,则自动按照byName 方式进行装配(见2);
如果没有匹配,则回退为一个原始类型(UserDao)进行匹配,如果匹配则自动装配;
4. @PostConstruct(JSR-250)注解
在方法上加上注解@PostConstruct,这个方法就会在Bean 初始化之后被Spring 容器执
行(注:Bean 初始化包括,实例化Bean,并装配Bean 的属性(依赖注入))。它的一个典型的
应用场景是,当你需
文档评论(0)