gpt4 book ai didi

java - 如何在外部类上加载@ConfigurationProperties?

转载 作者:搜寻专家 更新时间:2023-11-01 03:46:45 24 4
gpt4 key购买 nike

如果 bean 类来自外部库(例如我自己的公共(public)库),我如何使用 @ConfigurationProperties 填充该 bean?

示例:来自公共(public)库:

package com.my.commons.person;

import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotNull;

@Validated
public class CommonPerson {
private @NotNull String name;
private @NotNull String age;

public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getAge() { return age; }
public void setAge(String age) { this.age = age; }
}

实现项目:

package com.my.api;

@SpringBootApplication
public class MainApp extends SpringBootServletInitializer {
@Bean
@ConfigurationProperties("commons.person")
public CommonPerson person() {
return new CommonPerson();
}
}

application.properties(也只在实现项目中):

commons.person.name=Dummy
commons.person.age=30

结果:

application startup fails due to validation exception. o.s.b.b.PropertiesConfigurationFactory : Field error in object 'commons.person' on field 'name': rejected value [null]...

顺便说一句:如果我将 CommonPerson 直接移动到实现项目中,代码将按预期工作。只有当类(class)来自外部时它才行不通......

根据文档,这应该可行: @ConfigurationProperties on thirdparty classes

我正在用 maven 加载我的公共(public)包:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>com.my.commons</groupId>
<artifactId>person-commons</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>

最佳答案

正如@davidxxx 和其他人所指出的,代码本身是正确的。

我的问题可能是来自 IDE 的一些缓存问题。我只是把pom.xml里面的commons库拿出来,保存,看了一下。这以某种方式触发了 IDE 内部的清理,而 mvn clean install 没有(因为我之前多次运行这些 maven 目标)。

关于java - 如何在外部类上加载@ConfigurationProperties?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48502716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com