前言
大家应该一直都是在Controller层使用@Autowired注解,如果需要注入的service过多,那就需要写很多的@Autowired,显得代码臃肿。现在为大家展现一个新的注解:@RequiredArgsConstructor来替换掉@Autowired。
一、@Autowired
1.用法
其用法各位应该都再熟悉不过了,示例代码如下:
@Autowired
AppleService appleService;
@Autowired
BananaService bananaService;
但是idea会对@Autowired产生警告⚠️,这对于有代码洁癖的小伙伴不太苏福!接下来看看今天的主角:@RequiredArgsConstructor
二、@RequiredArgsConstructor
1.引入依赖
代码如下:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
2.添加注解
代码如下:
@RestController
@RequestMapping("/test")
@RequiredArgsConstructor // 添加该注解
public class TestController {
}
3.注入
代码如下:
@RestController
@RequestMapping("/test")
@RequiredArgsConstructor
public class TestController {
final AppleService appleService; // 需要加上final或者加上@NonNull
@RequestMapping(value = {"/"}, produces = "application/json;charset=utf-8", method = RequestMethod.GET)
public String getApple() {
return JSONObject.toJSONString(appleService.getApple());
}
}
需要注意的是,所注入的service要加上final关键字修饰。
或者加上@NonNull注解,示例代码入下:
@NonNull
AppleService appleService;
总结
从@RequiredArgsConstructor的命名来看,显然是对应了spring中常见的3中注解方式:注解注入、构造器注入、setter注入(具体示例代码就不贴了),之中的构造器注入。