Вот мой build.gradle ...
dependencies {
compile('org.springframework.boot:spring-boot-starter-parent:2.0.1.RELEASE')
compile('org.springframework.boot:spring-boot-starter-batch')
compile("org.springframework.boot:spring-boot-starter-jdbc")
compile("org.springframework.boot:spring-boot-starter-web")
compile("com.h2database:h2")
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile('org.springframework.batch:spring-batch-test')
}
Как мне показалось, по умолчанию будет включен JMX. Я иду в JConsole, подключаюсь к приложению и ожидаю увидеть папку org.springframework.boot
в java.util.logging
, я ничего не вижу.
Итак, теперь я выбираю несколько своих пользовательских бобов и добавляю @ManagedResource
, я знаю, вижу это.
Тем не менее, что если я захочу выставить пакетные бобы типа @JobOperator, как мне это сделать?
Pre Spring Boot, я мог бы что-то вроде:
<bean class="org.springframework.jmx.export.MBeanExporter">
<property name="beans">
<map>
<entry key="spring:service=batch,bean=jobOperator">
<bean class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="jobOperator"/>
<property name="interceptorNames" value="exceptionTranslator" />
</bean>
</entry>
</map>
</property>
<property name="assembler">
<bean class="org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler">
<property name="interfaceMappings">
<map>
<entry key="spring:service=batch,bean=jobOperator"
value="org.springframework.batch.core.launch.JobOperator"/>
</map>
</property>
</bean>
</property>
</bean>
Когда я определяю свой JobOperator, в моем файле @Configuration в Spring Boot я делаю:
@Bean
public JobOperator jobOperator() throws Exception {
SimpleJobOperator simpleJobOperator = new SimpleJobOperator();
// the operator wraps the launcher
simpleJobOperator.setJobLauncher(this.jobLauncher);
...
}
Я не могу добавить @ManagedResource под аннотацией @Bean. Итак, как мне представить JobOperator как компонент JMX?