1、@Autowired 注解:
首先在使用时候需要引入配置:

  1. <!-- 该 BeanPostProcessor 将自动起作用,对标注 @Autowired 的 Bean 进行自动注入 -->
  2. <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

在Spring MVC 中 由于配置了“ <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>”

故不使用引入上面自动注入也可实现指定注入功能。

@Autowired 可以标注在属性,以及set方法上,以及构造函数上.进行标注,然后自动完成注入。

2、@Qualifier 注解:
如果配置了多个类型为 User 的 Bean, 那么我们在

  1. @Autowired
  2. private User setUser(User user){
  3. //....
  4. }

会出现错误,这个时候我们就需要对注入的对象指定读取Bean的名称,则所以 @Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。

  1. @Autowired
  2. private User setUser(@Qualifier("user1") User user){
  3. //....
  4. }
  5.  
  6. public class Recommender {
  7. @Autowired
  8. @Qualifier("main")
  9. private MovieCatalog log;
  10. }

@Autowired 可以对成员变量、方法以及构造函数进行注释,而 @Qualifier 的标注对象是成员变量、方法入参、构造函数入参。正是由于注释对象的不同,所以 Spring 不将 @Autowired 和 @Qualifier 统一成一个注释类。

3、@Required注解:
@Required注解检查 但他只检查属性是否已经设置而不会测试属性是否非空

4、@Resource 写在属性或者是setter方法上,按照名称注入 可以配置name="...",
如果不配置则提取 setter方法名,该bean必须存在。
@Resource(name="user")
private User user;

5、@Component,@Service,@Controller,@Repository 注解:
Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。虽然目前这 3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能。所以,如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释。

6、@PostConstruct 注解,标识Bean在初始化的时候执行,
@PreDestroy 注解,表示在Bean在对象销毁的时候执行。

  1. @PostConstruct
  2. public void init() {
  3.  
  4. }
  5.  
  6. @PreDestroy
  7. public void destory() {
  8.  
  9. }

7、@Scope 注解 设置作用域:

prototype,singleton 注意spring2.0后 又增加了request ,session和global session 4个作用区域

Rhythmk 一步一步学 JAVA (14) Spring-3 @Autowired,@Qualifier @Required @Resource @Component,@Service,@Controller,@Repository @PostConstruct,@PreDestroy的更多相关文章

  1. 从零开始学 Java - 搭建 Spring MVC 框架

    没有什么比一个时代的没落更令人伤感的了 整个社会和人都在追求创新.进步.成长,没有人愿意停步不前,一个个老事物慢慢从我们生活中消失掉真的令人那么伤感么?或者说被取代?我想有些是的,但有些东西其实并不是 ...

  2. 教妹学Java:Spring 入门篇

    你好呀,我是沉默王二,一个和黄家驹一样身高,刘德华一样颜值的程序员(管你信不信呢).从两位偶像的年纪上,你就可以断定我的码龄至少在 10 年以上,但实话实说,我一直坚信自己只有 18 岁,因为我有一颗 ...

  3. 从零开始学 Java - 搭建 Spring MVC 记录云创的日子 第一章

    2017年11月29日 来到新项目,需要用到Spring MVC ,那么我就开始记录我这次的学习. Spring MVC 框架是围绕一个 DispatcherServlet 来设计的,这个 Servl ...

  4. Java框架spring Boot学习笔记(三):Controller的使用

    Controller注解介绍 @Controller:处理http请求 @RestController: Spirng4之后新加的注解,其实是一个组合注解等同于@ResponseBody和@Contr ...

  5. [Java复习] Spring 常见面试问题

    1. 什么是 Spring 框架?Spring 框架有哪些主要模块? 轻量级实现IoC和AOP的JavaEE框架. Core模块: bean(bean定义创建解析), context(环境, IoC容 ...

  6. 一步一步学Silverlight 2系列(14):数据与通信之WCF

    一步一步学Silverlight 2系列(14):数据与通信之WCF   概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框 ...

  7. 一步一步学ROP之linux_x64篇

    一步一步学ROP之linux_x64篇 一.序 **ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防 ...

  8. 一步一步学ROP之linux_x86篇

    一步一步学ROP之linux_x86篇 作者:蒸米@阿里聚安全 ​ 一.序 ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过 ...

  9. 一步一步学ZedBoard & Zynq(四):基于AXI Lite 总线的从设备IP设计

    本帖最后由 xinxincaijq 于 2013-1-9 10:27 编辑 一步一步学ZedBoard & Zynq(四):基于AXI Lite 总线的从设备IP设计 转自博客:http:// ...

随机推荐

  1. base64 和 Blob 相互转换

    Base64 to Blob function dataURLtoBlob(dataurl) { var arr = dataurl.split(','), mime = arr[0].match(/ ...

  2. Canvas 与 SVG 的区别

    这个说实话,我只用过canvas画过一些简单的图形,复杂的不懂,之所以列出来,是因为之前在面试中有被问到,在这里mark一下,后期深化. 以下的内容全部来自于w3school http://www.w ...

  3. Spring 学习笔记(一)

    # IOC, DI # ApplicationContext.xml 描述类之间的依赖注入关系 # 初始化Bean工厂的两种方式 ## ClassPathXmlApplicationContext # ...

  4. HDU2157 How many ways矩阵再识

    春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线去教室 ...

  5. BZOJ1597土地购买 【斜率优化DP】

    BZOJ1597土地购买 [斜率优化DP] Description 农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足( ...

  6. __weak、__strong这样的关键词和weak、strong有哪些区别

    ios4 设备上最好就不要使用 ARC... strong,weak 用来修饰属性.strong 用来修饰强引用的属性:@property (strong) SomeClass * aObject;  ...

  7. 《DSP using MATLAB》示例Example 8.16

    %% ------------------------------------------------------------------------ %% Output Info about thi ...

  8. Robotframework第1课--安装RF

    大家好,我是孟船长,现从事自动化测试的工作,工作用的工具就是Robotframework,现在把这“几年”的所得分享出来,希望新进入这行的朋友能够少吃点“新人苦”,能够早点入手robot framew ...

  9. MATLAB自带工具箱实现PCA降维代码

    PCA基本流程: 1.训练集矩阵算协方差矩阵A; 2.算协方差矩阵特征值与特征向量; 3.按特征值的大小排列特征矩阵,得B,对应的特征值(按从大到小排列)组成向量a; 4.A*B得到去关联的新矩阵C, ...

  10. CentOS 7 named配置forward

    上文在CentOS 7中安装配置了bind.有时我们只需要一个DNS的proxy来转发DNS的请求.这时,我们就需要配置forword. forword在named.conf中的添加: forward ...