Я використовую @Bean для вирішення цієї проблеми. @Bean розроблений спеціально для того, щоб створювати середовище.
Нижченаведена логіка в основному, у розробці (Tomcat) і тестуванні (JUnit), використовується MBeanServerFactoryBean. В іншому випадку використовуйте JBoss MBean Server.
@Bean
def mbeanServer: MBeanServer = {
val server = if (environment == "development" || environment == "test") {
val factory = new MBeanServerFactoryBean
factory.setLocateExistingServerIfPossible(true)
factory.setRegisterWithFactory(true)
factory.afterPropertiesSet()
log.info("using default MBeanServer")
factory.getObject
} else {
val clazz = Class.forName("org.jboss.mx.util.MBeanServerLocator")
val locateJboss = clazz.getMethod("locateJBoss", List.empty[Class[_]].toArray: _*)
log.info("using JBoss MBeanServer")
locateJboss.invoke(null,
List.empty[java.lang.Object].toArray: _*).asInstanceOf[MBeanServer]
}
log.info("mbeanServer: " + server)
server
}
На весні 3.1 ви можете вирішити цю проблему і використовувати конфігурацію xml за допомогою профілів. Але вище працює з Spring 3.0.