用于Java EE环境的的注释等效项

我怎样才能实现与此类似的东西:

  

使用注释?

 @Configuration @EnableTransactionManagement public class AppConfig { @Bean public DataSource dataSource() { // What goes here? } @Bean public PlatformTransactionManager txManager() { // What goes here? } } 

我已经看过很多关于DataSourceTransactionManagerBasicDataSource的例子,但我找不到等效的注释驱动配置(找到容器UserTransaction等)。

我所知道的唯一方法是复制这些自定义命名空间的名称空间解析器的行为。

因此, org.springframework.ejb.config.JndiLookupBeanDefinitionParser处理,最终创建一个bean,它是传入属性的JndiObjectFactoryBean实例。

类似地, org.springframework.transaction.config.JtaTransactionManagerBeanDefinitionParser处理,并基于运行时环境返回类的特定实例。

你可以使用Spring 4的一个简洁function是@Conditional ( 这里引用)。 使用@Conditional并使用名为ConditionalOnClass的Spring-Boot条件实现( 此处引用),您可以复制的行为,如下所示:

 @Configuration @ConditionalOnClass(name="weblogic.transaction.UserTransaction") public class WebLogicTxMgrConfig { @Bean public JtaTransactionManager txManager() { return new WebLogicJtaTransactionManager(); } } 

我知道这不是一个完整的答案,但希望能帮助您创建相关配置。