我正在使用 quarkus @ConfigProperty 注释来向字符串数据成员注入值:
@ApplicationScoped
public class ActiveMQRout extends RouteBuilder {
public String getOrderMessage() {
return orderMessage;
}
public void setOrderMessage(String orderMessage) {
this.orderMessage = orderMessage;
}
@ConfigProperty(name="order")
String orderMessage;
//more code that uses orderMessage
}
在 application.properties 文件中我有这个值: 订单=订单2
orderMessage 的值保持为空。我尝试使用以下选项而不是注入:
orderMessage = ConfigProvider.getConfig().getValue("order", String.class);
并且它正在工作。我怎样才能通过注入来实现这一点(通过使用 @ConfigProperty 注释)?
(我已尝试对 ActiveMQRout 类使用 @Singleton 注释,但仍然不起作用。 我还添加了 getter 和 setter,但仍然不起作用)
我遇到了同样的问题,因为我在构造函数中使用了 config 属性,但在调用构造函数时它通常尚未设置。 我使用 @PostConstruct 来使用配置属性,然后它不再为空。
// THIS WORKS: Using the prop in a @PostConstruct method
@ApplicationScoped
public class BookRepository {
private final Set<Book> books = //...
@ConfigProperty(name = "books.genre")
String genre;
@PostConstruct
void init() {
books.add(new Book(1, "The Great Gatsby", "F. Scott Fitzgerald", 1925, genre));
books.add(new Book(2, "To Kill a Mockingbird", "Harper Lee", 1960, genre));
books.add(new Book(3, "1984", "George Orwell", 1949, genre));
}
因此,在调用该属性时要小心,因为它可能尚未包含其值。