【发布时间】:2019-11-27 17:45:27
【问题描述】:
我的 http url 有一个控制器,我的数据库带有自动连接事件(一切正常)
@RestController public class CalculateDistance {
@Autowired MyDatabase mydb
some code
@GetMapping(value = "/url")
public Strng get() {
return mydb.fetch("my query");
}
现在我有相同的自动装配,但它不工作,我得到 null 而不是我的对象
@Component public class PrometheusMonitor {
@Autowired MyDatabase mydb
public PrometheusMonitor(MeterRegistry registry) {
meterRegistry = registry;
mydb = null ...
我得到一个异常,因为 mydb = null
但它适用于我的 http 控制器
【问题讨论】:
-
你用
new创建了一个PrometheusMonitor吗?如果是这样,那么它是 stackoverflow.com/questions/19896870/… 的副本 -
没有,因为 springboot 做到了,我关注了这个blog.autsoft.hu/…
-
啊。好的。我现在看到了。如果对象尚不存在,您不能期望 Spring 自动装配对象的字段。由于您试图在构造函数中访问
mydb,因此该对象尚未构造。停止使用现场注入。如果您发布实际代码而不是伪代码,一切都会更加清晰。 -
@JBNizet 那我该怎么办?
-
停止使用场注入。使用构造函数注入。使用构造函数注入 mydb,就像注入注册表一样。
标签: java prometheus