我试图为我的基于Spring Boot的项目生成spring-configuration-metadata.json文件。如果我使用Java@ConfigurationProperties类,它会正确自动地生成:
@ConfigurationProperties("myprops")
public class MyProps {
private String hello;
public String getHello() {
return hello;
}
public void setHello(String hello) {
this.hello = hello;
}
}
但是如果我使用Kotlin类,spring配置元数据。json文件没有生成(我已经尝试过gradle build和Idea Rebuild项目)。
@ConfigurationProperties("myprops")
class MyProps {
var hello: String? = null
}
AFAIK Kotlin使用构造函数、getter和setter生成同一个类,应该充当常规的Java bean。
你知道为什么spring boot配置处理器不能与Kotlin类一起工作吗?
Kotlin有自己的编译器。元数据由注释处理器生成,注释处理器是Java编译器中的一个挂钩点。
我不知道Kotlin中是否有这样的钩子点,但无论如何,Spring Boot目前只支持Java。也许这会有帮助?
对于那些想使用Maven而不是Gradle的人,需要在kotlin Maven插件配置中添加一个kapt
执行。
<execution>
<id>kapt</id>
<goals>
<goal>kapt</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/main/kotlin</sourceDir>
</sourceDirs>
<annotationProcessorPaths>
<annotationProcessorPath>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>1.5.3.RELEASE</version>
</annotationProcessorPath>
</annotationProcessorPaths>
</configuration>
</execution>
如果将编译器插件(如kotlin-maven-allopen
)声明为依赖项,则KT-18022会阻止此操作。
谢谢你为我指明了正确的方向。因此,解决方案是添加
dependencies {
...
kapt "org.springframework.boot:spring-boot-configuration-processor"
optional "org.springframework.boot:spring-boot-configuration-processor"
...
}
建造。gradle文件,在命令行中运行gradle compileJava,并在IntelliJ Idea设置构建、执行和部署中打开注释处理-
还要注意的是,如果没有这一行
optional "org.springframework.boot:spring-boot-configuration-processor"
IntelliJ Idea会抱怨什么
无法解析配置属性
应用程序中的消息。属性或应用程序。yml
我想通过以下方式生成Spring Boot配置元数据: 配置元数据注释处理器设置 在maven中,可以: 但是在gradle中,没有生成: spring boot配置处理器也有同样的问题,maven可以,但gradle不行。 我使用的插件是java或org。喷气式飞机。科特林。jvm,而不是组织。springframework。boot,但我认为这不是问题所在(对于plugin.springfra
我努力实现的目标 < li >从源大JSON文件(employee-sample.json)获取数据 < li >一个简单的spark应用程序,将它作为文本文件读取并存储在parquet(simple-loader.java)中。我不知道JSON文件中有什么,所以我不能放入任何模式,所以我希望读取模式,而不是写入模式。创建了一个parquet文件,其中一列名为“value ”,包含JSON字符串
我试着完成在spring boot的自定义属性。 我试图通过IntelliJ IDEA 2016.3创建一个简单的项目: 使用spring boot初始值设定项创建了一个新的Gradle项目(我根本没有检查任何内容)。 创建了新类。 文档中说我应该在我的项目中添加以下内容: 之后,我尝试重新构建项目并在设置中启用注释处理器,但通知还没有消失。完成也不起作用(我创建了一个字符串)。
生成配置缓存optimize:config 可以为应用或者模块生成配置缓存文件 php think optimize:config 默认生成应用的配置缓存文件,调用后会在runtime目录下面生成init.php文件,生成配置缓存文件后,应用目录下面的config.php common.php以及tags.php不会被加载,被runtime/init.php取代。 如果需要生成某个模块的配置缓存,