【发布时间】:2022-11-22 20:22:10
【问题描述】:
我想定义一个应该由 Spring 管理并从 application.yml 注入其属性的 Bean。
application.yml //
client:
port: 80
address: "xyz.net"
timeout: 100
Client.java // this class is external, we cannot change it
public class Client {
private final int port;
private final String address;
public void setPortAddress(String address, int port) //
...
}
我确实尝试使用 @Configuration 但它不起作用。错误是地址未设置,同时尝试访问客户端实例。
Service.java //
@Configuration
@ConfigurationProperties(prefix="client")
@ComponentScan(basePackageClasses=Service.class)
public class Config {
int port;
String address;
@Bean
Client getClient(){
Client client = new Client();
client.setPortAddress(address, port);
return client;
}
}
非常感谢任何帮助。
【问题讨论】:
-
删除
@ConfigurationProperties并将@Value("${client.port}等添加到字段中。要么是配置类,要么是属性持有者,您正试图将两者硬塞进一个类中。
标签: java spring javabeans code-injection