STS4中使用Lombok @RequiredArgsConstructor替代@Autowired失效求助
问题解决:Lombok @RequiredArgsConstructor 无法在STS4中实现依赖注入
问题重现
我用STS4开发Spring Boot项目,想在浏览器展示数据库信息列表,但在UserService.java中使用Lombok的@RequiredArgsConstructor配合private final UserRepository userRepository;时,无法实现依赖注入。已做排查:
- 在
application.properties添加配置:spring.thymeleaf.check-template-location=false、spring.jpa.open-in-view=false - 移除
SpringToolSuite4.ini中的Lombok配置,通过STS4的HELP>Install New Software安装了官方Lombok插件,安装成功 - 在
pom.xml手动指定Lombok版本1.18.30,出现Duplicating managed version 1.18.30 for lombok错误,问题未解决
目前发现编写private final UserRepository userRepository;时出现非空警告,怀疑STS4未正确处理Lombok注解和导入。
解决方案
修复pom.xml版本冲突
Spring Boot父POM已经内置管理了Lombok的版本,手动指定版本会导致冲突。直接删除pom.xml中手动添加的Lombok版本配置,保留基础依赖即可:<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>验证STS4 Lombok插件状态
重启STS4后,打开Window > Preferences > Lombok,确保@RequiredArgsConstructor对应的Constructor选项已勾选,插件处于激活状态。检查UserService类的配置
- 必须给
UserService类加上@Service注解,Spring才能识别这个类为可注入的Bean - 确认
@RequiredArgsConstructor的导入路径是import lombok.RequiredArgsConstructor;,不要导入错误的包 - 针对非空警告:要么给
userRepository字段加上@NonNull注解(final字段配合@RequiredArgsConstructor本就会被处理,这步可选),要么在STS4的Window > Preferences > Java > Compiler > Errors/Warnings > Null analysis中调低相关警告级别。
- 必须给
清理项目缓存与重新构建
- 右键项目选择
Maven > Update Project,勾选Force Update of Snapshots/Releases后执行 - 执行Maven的
clean和compile命令,或者通过Project > Clean清理项目后重新构建
- 右键项目选择
确认UserRepository的有效性
确保UserRepository接口继承了JpaRepository(或Spring Data的其他Repository接口),并且加上@Repository注解(Spring Data虽能自动识别,但显式添加更稳妥)。
内容的提问来源于stack exchange,提问作者CatBin5mm
相关产品推荐
相关产品推荐

