Lombok @AllArgsConstructor Autowired spring 中的字段是否自动启动?
Does Lombok's @AllArgsConstructor Autowire the fields in spring boot automatically?
我正在按照 YouTube 教程构建 spring 启动应用程序。该人使用了 lombok,因此他在 class 的任何字段上都没有 @Autowired
注释,并且他的代码工作正常。但是,当我尝试相同的操作时,控制台显示该服务为空。
附上适当的代码和输出截图以供参考。
@AllArgsConstructor
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
private AppUserService appUserService;
private BCryptPasswordEncoder bCryptpasswordEncoder;
@Bean
public DaoAuthenticationProvider daoAuthenticationProvider() {
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setUserDetailsService(appUserService);
provider.setPasswordEncoder(bCryptpasswordEncoder);
return provider;
}
}
删除 @AllArgsConstructor
并使用 @Autowired
注释后,我的代码有效。
所以,
将 lombok 依赖项与 spring boot auto 一起使用会自动连接字段吗?如果是,那我犯了什么错误?
PS : 我在 STS 4
上使用 Java 11 和 Spring boot 2.4.5
如前所述这是 lombok 与 STS 的问题。在STS中使用lombok,我们需要做以下事情
- 将lombok jar从.m2文件夹复制到安装STS的地方
- 将 jar 重命名为
lombok.jar
- 找到
SpringToolSuite4.ini
文件(通常在同一文件夹中)并将此行 -javaagent:lombok.jar
添加到文件末尾。
- 重启STS
我正在按照 YouTube 教程构建 spring 启动应用程序。该人使用了 lombok,因此他在 class 的任何字段上都没有 @Autowired
注释,并且他的代码工作正常。但是,当我尝试相同的操作时,控制台显示该服务为空。
附上适当的代码和输出截图以供参考。
@AllArgsConstructor
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
private AppUserService appUserService;
private BCryptPasswordEncoder bCryptpasswordEncoder;
@Bean
public DaoAuthenticationProvider daoAuthenticationProvider() {
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setUserDetailsService(appUserService);
provider.setPasswordEncoder(bCryptpasswordEncoder);
return provider;
}
}
删除 @AllArgsConstructor
并使用 @Autowired
注释后,我的代码有效。
所以, 将 lombok 依赖项与 spring boot auto 一起使用会自动连接字段吗?如果是,那我犯了什么错误?
PS : 我在 STS 4
上使用 Java 11 和 Spring boot 2.4.5如前所述
- 将lombok jar从.m2文件夹复制到安装STS的地方
- 将 jar 重命名为
lombok.jar
- 找到
SpringToolSuite4.ini
文件(通常在同一文件夹中)并将此行-javaagent:lombok.jar
添加到文件末尾。 - 重启STS