@RequiredArgsConstructo注解
- 一、@Autowired
- 二、@Resource
- 三、Lombok提供的@RequiredArgsConstructor注解
【Spring|Lombok 妙用之@RequiredArgsConstructo注解】丢掉 @Autowired,@Resource 让代码更简洁!
一、@Autowired Spring提供的注解,默认的注入方式为 byType ,也就是根据类型匹配,当有多个实现时,则通过 byName 注入,也可以通过配合@Qualifier注解来显式指定name值,指明要使用哪个具体的实现类。
@RestController
public class O2oOrderController implements IO2oOrderController {
@Autowired
O2oOrderService o2oOrderService;
@Autowired
O2oPayService o2oPayService;
@Autowired
O2oSellService o2oSellService;
/**
* 创建O2O订单
*
* @param o2oOrderReq
*/
@Override
public Response createOrder(O2oOrderReq o2oOrderReq) {
return ResponseUtils.success(o2oOrderService.createOrder(o2oOrderReq));
}
二、@Resource Java JSR-250中提供的注解,默认通过 byName 注入,如果没有匹配则通过 byType 注入。
@RestController
public class O2oOrderController implements IO2oOrderController {
@Resource
O2oOrderService o2oOrderService;
@Resource
O2oPayService o2oPayService;
@Resource
O2oSellService o2oSellService;
/**
* 创建O2O订单
*
* @param o2oOrderReq
*/
@Override
public Response createOrder(O2oOrderReq o2oOrderReq) {
return ResponseUtils.success(o2oOrderService.createOrder(o2oOrderReq));
}
三、Lombok提供的@RequiredArgsConstructor注解 1:导入Lombok包
org.projectlombok
lombok
1.18.12
2、在注入时需要用final定义。
举例如下
@RequiredArgsConstructor
@RestController
public class O2oOrderController implements IO2oOrderController {final O2oOrderService o2oOrderService;
final O2oPayService o2oPayService;
final O2oSellService o2oSellService;
/**
* 创建O2O订单
*
* @param o2oOrderReq
*/
@Override
public Response createOrder(O2oOrderReq o2oOrderReq) {
return ResponseUtils.success(o2oOrderService.createOrder(o2oOrderReq));
}
参考文章
@RequiredArgsConstructor用法
@RequiredArgsConstructor 注解
@RequiredArgsConstructor注解浅谈
@RequiredArgsConstructor注解
推荐阅读
- maven|Maven---彻底理解聚合项目和父子模块的关系
- Linux|一文带你学会Shell基操
- spring|spring boot 集成Kafka配置文件详解
- JavaEE|【Spring Boot】SpringBoot 配置文件详解
- springboot|springboot配置文件详解
- 适用于所有级别程序员的7个最佳Java博客
- 更新ing!!读书(HTTP和Java)笔记整理
- Servlet|Servlet学习之Session
- 单例模式|单例模式(饿汉式,dcl懒汉式)