Spring Data 流任务不显示Sping Boot 属性

cgvd09ve  于 2023-03-08  发布在  Spring
关注(0)|答案(1)|浏览(151)

我有一个Sping Boot 应用程序,我想将其部署在Spring Cloud Dataflow服务器上。我遇到了应用程序属性问题。由于某种原因,嵌套属性未显示在Dataflow UI中。为什么会发生这种情况?
我已经在application.yml文件中定义了我的属性。我已经在www.example.com中声明了我的属性dataflow-configuration-metadata.properties。我正在将我的Sping Boot jar文件从maven源注册到SDF中,然后将其添加到任务中。在任务中,选项按钮不会获取我的所有属性。
我的应用程序包括Spring Batch、Spring Web、Hibernate、JaxB、mapstruct和lombok。

bogh5gae

bogh5gae1#

首先,既然您提到您正在使用Lombok,那么您需要确保正确配置pom.xml中的依赖项。
根据Spring文档(配置元数据)
如果你在你的项目中使用Lombok,你需要确保它的注解处理器在spring-boot-configuration-processor之前运行。为了在Maven中做到这一点,你可以使用Maven编译器插件的annotationProcessors属性以正确的顺序列出注解处理器。如果你没有使用这个属性,并且注解处理器是由类路径上可用的依赖项选择的,确保lombok相关性在spring-boot-configuration-processor相关性之前定义。
在此基础上,如果使用maven-compiler-plugin,则必须按以下顺序声明注解处理器:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>${compiler-plugin.version}</version>
    <configuration>
        <annotationProcessorPaths>
            <path>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>${org.mapstruct.mapstruct-processor.version}</version>
            </path>
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${org.projectlombok.lombok.version}</version>
            </path>
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok-mapstruct-binding</artifactId>
                <version>${org.projectlombok.ombok-mapstruct-binding.version}</version>
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin>

继续讨论属性,假设application.yml如下所示:

my-app:
  name: AppName
  config:
    port: 8080

则配置属性类应为:

@Data
@Configuration
@ConfigurationProperties(prefix = "my-app")
public class AppProperties {

    /**
     * Name
     */
    private String name;

    private final Config config = new Config();

    @Data
    public static class Config {

        /**
         * Port
         */
        private int port;
    }
}

为了使Dataflow UI正确显示属性,META-INF/dataflow-configuration-metadata.properties应为:

configuration-properties.classes=com.example.app.AppProperties,\
com.example.app.AppProperties$Config

**重要提示:**注意我们在.properties文件中声明内部类的方式。

相关问题