@RequiredArgsConstructo注解
丢掉 @Autowired,@Resource 让代码更简洁!
一、@Autowired
Spring提供的注解,默认的注入方式为 byType ,也就是根据类型匹配,当有多个实现时,则通过 byName 注入,也可以通过配合@Qualifier注解来显式指定name值,指明要使用哪个具体的实现类。
@RestController
public class O2oOrderController implements IO2oOrderController {
@Autowired
O2oOrderService o2oOrderService;
@Autowired
O2oPayService o2oPayService;
@Autowired
O2oSellService o2oSellService;
@Override
public Response<O2oOrderResp> 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;
@Override
public Response<O2oOrderResp> createOrder(O2oOrderReq o2oOrderReq) {
return ResponseUtils.success(o2oOrderService.createOrder(o2oOrderReq));
}
三、Lombok提供的@RequiredArgsConstructor注解
1:导入Lombok包
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
2、在注入时需要用final定义。 举例如下
@RequiredArgsConstructor
@RestController
public class O2oOrderController implements IO2oOrderController {
final O2oOrderService o2oOrderService;
final O2oPayService o2oPayService;
final O2oSellService o2oSellService;
@Override
public Response<O2oOrderResp> createOrder(O2oOrderReq o2oOrderReq) {
return ResponseUtils.success(o2oOrderService.createOrder(o2oOrderReq));
}
参考文章 @RequiredArgsConstructor用法 @RequiredArgsConstructor 注解 @RequiredArgsConstructor注解浅谈 @RequiredArgsConstructor注解
|