Spring全家桶中各个注解的用法

发布时间 2023-03-22 21:16:26作者: companion

1.@ResponseBody

@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

2.@Controller 

https://blog.csdn.net/m0_66278959/article/details/126447183

https://blog.csdn.net/qq_46046423/article/details/109336282

@Controller用于标记在一个类上,使用它标记的类就是一个SpringMVC的 Controller类,分发处理器会扫描使用该注解的类的方法,并检测该方法是否使用了 @RequestMapping 注解。
@Controller只是定义了一个控制器类,而使用 @RequestMapping 注解的方法才是处理请求的处理器。

3.@RestController 

@RestController = @ResponseBody+@Controller 

4.@Mapper

mapper接口代理映射到mapper.xml文件的作用

或者 在运行的主类上添加

@MapperScan("mapper接口所在的文件") 注解包扫描;

5.@bean

Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。Spring只会调用一次,将这个Bean对象放在自己的IOC容器中。

通俗的将就是在服务启动时,实例化一个对象放到ioc容器中,在需要初始化的实例,方法,内容时使用。

未指定bean 的名称,默认采用的是 "方法名" + "首字母小写"的配置方式

6.@Qualifier

https://www.jb51.net/article/217180.htm

详细作用: https://zhuanlan.zhihu.com/p/566046300

1.常规用法限定注入类

2.@Qualifier筛选注入对象

当有多个实例的时候,Spring的@Autowired支持注入到一个集合中:

3.自定义注解筛选注入对象

就如同ribbon的@LoadBalanced可以自定义注解类来限定注入Bean:

7.@Autowired和@Resource

https://www.jb51.net/article/169300.htm

Relying upon circular references is discouraged and they are prohibited by default.循环依赖bug解决

 8.@Component

https://www.cnblogs.com/clwydjgs/p/9255083.html

@component (把普通pojo实例化到spring容器中,相当于配置文件中的 
<bean id="" class=""/>

泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类

下面写这个是引入component的扫描组件  

<context:component-scan base-package=”com.xxx”>
  其中base-package为需要扫描的包(含所有子包)

9.@responsebody

https://www.cnblogs.com/qiankun-site/p/5774325.html

@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

10.@ExceptionHandler 

参考文章及用法:

https://blog.csdn.net/weixin_38972910/article/details/121022454

Spring的@ExceptionHandler可以用来统一处理方法抛出的异常

11.@ControllerAdvice

参考文章:

https://blog.csdn.net/qq_36829919/article/details/101210250

这个类是为那些声明了(@ExceptionHandler、@InitBinder 或 @ModelAttribute注解修饰的)方法的类而提供的专业化的@Component , 以供多个 Controller类所共享。

说白了,就是aop思想的一种实现,你告诉我需要拦截规则,我帮你把他们拦下来,具体你想做更细致的拦截筛选和拦截之后的处理,你自己通过@ExceptionHandler、@InitBinder 或 @ModelAttribute这三个注解以及被其注解的方法来自定义。