Quarkus @ConfigProperty 不注入值

问题描述 投票:0回答:1

我正在使用 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,但仍然不起作用)

quarkus
1个回答
0
投票

我遇到了同样的问题,因为我在构造函数中使用了 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));
}

因此,在调用该属性时要小心,因为它可能尚未包含其值。

© www.soinside.com 2019 - 2024. All rights reserved.