Spring MBean 自动装配启动?
Spring Boot autowire MBean?
Spring 引导不会自动装配我从另一个 Web 应用程序导出的 MBean:
@Component
@Service
@ManagedResource(objectName = IHiveService.MBEAN_NAME)
public class HiveService implements IHiveService {
@Autowired(required = true)
CategoryRepository categoryRepository;
@Override
@ManagedOperation
public String echo(String input) {
return "you said " + input;
}
}
我可以在 Oracle Java Mission Control 中看到并使用 Bean,但另一个 Spring 引导应用程序无法自动装配 bean。我这是我错过了一个注释。要自动装配我使用的 bean:
@Controller
@Configuration
@EnableMBeanExport
public class GathererControls {
@Autowired
IHiveService hiveService; // <-- this should be auto wired
有什么想法吗?
在要从原始应用程序访问管理 bean 的应用程序中不需要 @EnableMBeanExport
注释。
您需要的是连接到 JMX 注册表以访问导出的(由第一个应用程序)管理对象。
@Configuration
public class MyConfiguration {
@Bean
public MBeanProxyFactoryBean hiveServiceFactory() {
MBeanProxyFactoryBean proxyFactory = new MBeanProxyFactoryBean();
proxyFactory.setObjectName(IHiveService.MBEAN_NAME);
proxyFactory.setProxyInterface(IHiveService.class);
proxyFactory.afterPropertiesSet();
return proxyFactory;
}
@Bean
public IHiveService hiveService(MBeanProxyFactoryBean hiveServiceFactory) {
return (IHiveService) hiveServiceFactory.getObject();
}
}
现在在您的控制器中:
@Controller
public class GathererControls {
@Autowired
IHiveService hiveService; // <-- will be autowired
// ...
// ...
}
Spring 引导不会自动装配我从另一个 Web 应用程序导出的 MBean:
@Component
@Service
@ManagedResource(objectName = IHiveService.MBEAN_NAME)
public class HiveService implements IHiveService {
@Autowired(required = true)
CategoryRepository categoryRepository;
@Override
@ManagedOperation
public String echo(String input) {
return "you said " + input;
}
}
我可以在 Oracle Java Mission Control 中看到并使用 Bean,但另一个 Spring 引导应用程序无法自动装配 bean。我这是我错过了一个注释。要自动装配我使用的 bean:
@Controller
@Configuration
@EnableMBeanExport
public class GathererControls {
@Autowired
IHiveService hiveService; // <-- this should be auto wired
有什么想法吗?
在要从原始应用程序访问管理 bean 的应用程序中不需要 @EnableMBeanExport
注释。
您需要的是连接到 JMX 注册表以访问导出的(由第一个应用程序)管理对象。
@Configuration
public class MyConfiguration {
@Bean
public MBeanProxyFactoryBean hiveServiceFactory() {
MBeanProxyFactoryBean proxyFactory = new MBeanProxyFactoryBean();
proxyFactory.setObjectName(IHiveService.MBEAN_NAME);
proxyFactory.setProxyInterface(IHiveService.class);
proxyFactory.afterPropertiesSet();
return proxyFactory;
}
@Bean
public IHiveService hiveService(MBeanProxyFactoryBean hiveServiceFactory) {
return (IHiveService) hiveServiceFactory.getObject();
}
}
现在在您的控制器中:
@Controller
public class GathererControls {
@Autowired
IHiveService hiveService; // <-- will be autowired
// ...
// ...
}