@ConfigurationProperties(prefix = "my-config")
@ConstructorBinding
public class ConfigImportService {
/**
* the name of the bucket
* (IntelliJ shows this comment on the application.properties file)
*/
private final String bucketName;
private final String databaseName;
@Autowired
public ConfigImportService(
@Value("${bucket.name}") String bucketName,
@Value("${db.name}") String databaseName
) {
this.bucketName = bucketName;
this.databaseName = databaseName;
}
}
6条答案
按热度按时间roejwanj1#
为了让IntelliJ IDEA知道您的Sping Boot 属性,您可以在项目中定义Spring Boot配置元数据。
选项一:
如果你可以为你的属性使用一个
@ConfigurationProperties
注解的类,你可以将Sping Boot 配置注解处理器添加到你的classpath中,IntelliJ IDEA将在target
或out
中为你生成配置元数据:Maven:
Gradle:
选项二:
自行创建配置元数据文件
src/main/resources/META-INF/spring-configuration-metadata.json
:内容:
选项1和选项2:
在构建系统(Maven/Gradle)的IntelliJ IDEA工具窗口中,单击“刷新”按钮。
从菜单中选择
Build > Rebuild Project
。如果警告仍然出现,您可以尝试重新启动IDE。选择
File > Invalidate Caches / Restart
,然后单击Invalidate and Restart
。waxmsbnn2#
请为Kotlin项目的Gradle Kotlin脚本使用以下内容:
需要KotlinKapt来处理元数据和内存。
从official Spring documentation,Sping Boot Configuration Processor生成带有属性元数据的特殊json文件。
因此,要分发
jar
与属性语法突出显示,您需要:jar
打包之前,使用dependsOn
更新任务序列以生成文件(不确定,我上面的代码是最有效的解决方案,但是问题解决了)然而IntelliJ Idea可以与
annotationProcessor
Gradle配置一起工作(不幸的是,我没有确切的答案,为什么它需要确切的答案)。因此,您需要将相同的处理器添加到annotationProcessor
配置中。hgc7kmma3#
我也有同样的问题,加上没有显示自动完成,发现它适用于IntelliJ旗舰版,而不是社区版本。link
可以采取的几个有用步骤是:
target/classes/META-INF/spring-configuration-metadata.js
复制属性的确切名称以防止错误。@ConfigurationProperties("name-here")
注解,并且你已经用@EnableConfigurationProperties(NameOfTheConfigClass.class)
启用了它1aaf6o9v4#
基于Gradle的解决方法如下:
从Intellij Gradle面板运行构建(或仅运行
processResources
任务)后,有关属性的警告应该消失。不理想,但IntelliJ不支持kapt也不理想:-/
ffx8fchx5#
作为上述答案的附加要求。在Spring-boot 2.2之后,您可以在属性上使用
final
关键字以及注解@ConstructorBinding
,以便看到IntelliJ自动完成application.properties
文件上的属性名称。IntelliJ还可以识别是否在属性上添加java docs。当然,还需要依赖。
f4t66c6m6#
Spring Voot 3+在application.propertiesu可以使用