是否可以在Spring Boot中自动装配由 @ManagedResource 标记的对象。我尝试这样做但对象是 null 。
例如:
@Component
@ManagedResource(objectName = MyMBean.MBEAN_NAME)
public class MyMBeanImpl implements MyMBean {
private String attribute;
@Override
@ManagedAttribute(description="some attribute")
public void setAttribute(String attribute) {
this.attribute = attribute;
}
}
Spring创建适当的MBean。但是,当我尝试自动装配此对象以使用其属性时,我得到 null :
@Component
public final class Consumer {
@Autowired
MyMBean mBean; // is null
...
}
答案 0 :(得分:1)
如果未正确定义配置,则可能无法初始化@Autowired对象。 Spring扫描指定包中的托管组件。我假设你的spring boot主类上有 @ComponentScan 注释。如果主应用程序类位于根包中,则可以使用@ComponentScan批注而不指定basePackage属性。否则,您需要指定基本包属性。您需要指定类似于以下内容的basePackage属性:
@ComponentScan("<your_package_to scan_for beans>")
@EnableAutoConfiguration注释通常放在主弹簧启动应用程序类中。这隐式定义了一个用于搜索组件的基础包。