Spring|Lombok 妙用之@RequiredArgsConstructo注解


@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注解

    推荐阅读