程序员进阶之路--Spring boot常用注解解析

来公司实习几天了,今天开始熟悉业务代码,之前对于Spring等了解比较粗略,所以有些注解都一知半解的,这里记录下方便自己后续查询:

 

网上找了个比较全的博客,大多数的注解都总结到了,传送门:接近8000字的Spring/SpringBoot常用注解总结!安排!

 

下面就原博没有或者个人原因需要重点标记的内容进行阐述: 

1. @Slf4j

用作日志输出,如果不加该注解,则一般会在项目每个类的开头加入下面代码:

private final Logger logger = LoggerFactory.getLogger(当前类名.class);

如果直接用注解@Slf4j就可以省略这句代码,变得更简洁。当然,使用该注解的前提是要安装好Lombok插件。

 

2.@Component

是spring中的一个注解,它的作用就是实现bean的注入。他与@Repository@Service@Controller作用类似,但是后面这些注解会具备有更多的功能,而且功能各异。区别可见下表:

注解含义
@Component最普通的组件,可以被注入到spring容器进行管理
@Repository作用于持久层(Dao)
@Service作用于业务逻辑层
@Controller作用于表现层(spring-mvc的注解)

 

3. @Resource

@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,是J2EE的,需要导入,但是Spring支持该注解的注入。@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。(byType和byName的区别可以见这篇文章  Spring中的byName与byType)。

@Resource和@Autowired的具体区别,可以看下这篇文章 @Resource与@Autowired用法区别

那到底什么情况下该有哪个:

1.当注入的属性是接口
  1.1在接口只有一个实现类的时候,@Resource和@Autowire 在功能上是没有区别的
  1.2如果接口有多个实现类,在写法上,@Autowire还需要搭配@Qualifier或者@Primary,而@Resource不需要,自身属性即可满足

2.在使用@Autowire时,Idea会出现提示,强迫症看着很不舒服
  spring Team recommends: "Always use constructor based dependency injection in your beans. Always use assertions for mandatory dependencies".
  spring团队推荐用构造函数来注入Bean。

所以,基于以上,可以选择看起来和写起来都比较简单的@Resource注解(公司也是用这个)

 

4. @RequestBody

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。

具体看这篇博客:@RequestBody的使用

 

5. @Qualifier

用于在Controller中需要注入service但又有两个相关实现类时区分开到底是哪一个impl。

未完待续....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值