Spring常用注解小结

版权声明:本文为章鱼哥原创文章,若要转载,请注明出处 https://blog.csdn.net/qq_40388552/article/details/84823236
 以往我们使用Spring框架进行开发,使用xml文件来对bean进行注入或者是配置aop、事物,慢慢我们发现是在是太麻烦了,于是乎从Spring2.5版本后也开始支持注解。相比起之前使用xml来配置Spring框架,使用注解提供了更多的控制Spring框架的方式。现在,越来越多的项目都在使用注解做相关的配置,这时就有必要对Spring的常用的注解有一个了解,这里只是做一些简单的介绍。

1、@Autowired
@Autowired默认按类型匹配的,使用它我们在Java中就可以不用再写get/set方法

2、Qualifier(指定注入Bean的名称)
当容器中有一个以上匹配的Bean,则可以通过@Qualifier注解限定Bean的名称,可以与@Autowired一起使用。

3.@Resource
@Resource注解与@Autowired注解作用非常相似,但还是有一定的区别
说一下@Resource的装配顺序:
(1)、@Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配
(2)、指定了name或者type则根据指定的类型去匹配bean
(3)、指定了name和type则根据指定的name和type去匹配bean,任何一个不匹配都将报错
然后,区分一下@Autowired和@Resource两个注解的区别:
(1)、@Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配
(2)、@Autowired是Spring的注解,@Resource是J2EE的注解,这个看一下导入注解的时候这两个注解的包名就一清二楚了

Spring属于第三方的,J2EE是Java自己的东西,因此,建议使用@Resource注解,以减少代码和Spring之间的耦合。

4、@Service
@Service对应的是业务层Bean

5、@Scope(“prototype”)
Spring默认产生的bean是单例的,假如我不想使用单例怎么办,xml文件里面可以在bean里面配置scope属性。注解也是一样,配置@Scope即可,默认是"singleton"即单例,"prototype"表示原型即每次都会new一个新的出来。

6、@Component
@Component是所有受Spring 管理组件的通用形式,@Component注解可以放在类的头上,@Component不推荐使用。

7、@Controller
@Controller对应表现层的Bean,也就是Action,

8、@RestController
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。
(1) 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
(2) 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

9、@ Repository
@Repository对应数据访问层Bean

10、@Primary
自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常

11、@Configuration
@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

12、@Bean
@Bean明确地指示了一种方法,什么方法呢——产生一个bean的方法,并且交给Spring容器管理;从这我们就明白了为啥@Bean是放在方法的注释上了,因为它很明确地告诉被注释的方法,你给我产生一个Bean,然后交给Spring容器,剩下的你就别管了

13、@Value
Spring可以通过@Value来获取*.porperties文件中的内容 语法: @Value("${}")

14、@RequestMapping
*@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
RequestMapping注解有六个属性

  1. value: 指定请求的实际地址
  2. method: 指定请求的method类型, GET、POST、PUT、DELETE等;
  3. consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
  4. produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
  5. params: 指定request中必须包含某些参数值是,才让该方法处理。
  6. headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。*
阅读更多

没有更多推荐了,返回首页