Spring Boot autowire @ManagedResource

时间:2017-09-01 17:16:07

标签: java spring spring-mvc spring-boot

是否可以在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
    ...
}

1 个答案:

答案 0 :(得分:1)

如果未正确定义配置,则可能无法初始化@Autowired对象。 Spring扫描指定包中的托管组件。我假设你的spring boot主类上有 @ComponentScan 注释。如果主应用程序类位于根包中,则可以使用@ComponentScan批注而不指定basePackage属性。否则,您需要指定基本包属性。您需要指定类似于以下内容的basePackage属性:

@ComponentScan("<your_package_to scan_for beans>")

@EnableAutoConfiguration注释通常放在主弹簧启动应用程序类中。这隐式定义了一个用于搜索组件的基础包。