如何解决Micronaut 配置注入无法按预期工作
我使用的 Micronaut 版本:2.3.3
我尝试了 Micronaut 文档的“4.3 配置注入”中提到的示例(网址如下)。特别是注释@Property 和@Value。但是,在 Micronaut 启动期间,我的调试断点不会在任何这些方法中暂停。有没有人遇到过同样的问题并能够为此找到任何解决方案?
https://docs.micronaut.io/2.3.3/guide/index.html
这是“application.yml”文件中的条目
micronaut:
my:
engine:
manufacturer: BGH
cylinders: 6
这是代码。我期待我的调试断点为“setManufacturer”和“getCylinders”方法命中。但这不会发生:
import io.micronaut.context.annotation.Property;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class EngineConfig {
@Property(name = "my.engine.cylinders")
protected int cylinders;
private String manufacturer;
public int getCylinders() {
return cylinders;
}
public String getManufacturer() {
return manufacturer;
}
@Inject
public void setManufacturer(@Property(name = "my.engine.manufacturer") String manufacturer) {
this.manufacturer = manufacturer;
}
}
这是我尝试过的另一个代码,但在调试期间没有命中“getCylinders”方法。
import io.micronaut.context.annotation.Value;
import javax.inject.Singleton;
@Singleton
public class EngineImpl {
@Value("${my.engine.cylinders:6}")
protected int cylinders;
public int getCylinders() {
return cylinders;
}
public String start() {
return "Starting V" + getCylinders() + " Engine";
}
}
解决方法
我怀疑您的问题是您忘记了 bean 类上方的“@Singleton”注释。 如果你忘记了这个注解,它的实例将不会在 Micronaut IOC 容器中创建。因此,您没有得到调试点(因为在您的情况下它并没有真正初始化。)
否则,如果这不是您的问题,请发布您的代码,因为该示例对我来说可以正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。