我们有一个应用程序既可以作为独立的Spring应用程序运行,也可以作为Weblogic中的Webservice运行。独立应用程序通过读取属性文件来创建数据库DataSource,如下所示。
但是对于Webservices部分,我想通过JNDI使用Weblogic中配置的DataSource。我不确定如何根据我的应用程序运行的模式进行动态DataSource切换。请帮忙吗?
@Configuration
@PropertySources(value = {@PropertySource("classpath:app.properties")})
public class DAOConfig {
@Autowired
Environment env;
@Bean(destroyMethod = "close")
public DataSource dataSource() {
return new DataSources.Builder()
.host(env.getProperty("dbhost"))
.port(env.getProperty("dbport", Integer.class))
.service(env.getProperty("dbservice"))
.user(env.getProperty("dbuser"))
.pwd(env.getProperty("dbpwd"))
.initialConnectionsInPool(env.getProperty("dbinitialConnectionsInPool", Integer.class))
.maxConnectionsInPool(env.getProperty("dbmaxConnectionsInPool", Integer.class))
.build();
}
}
答案 0 :(得分:2)
使用spring profiles,以下示例使用xml config:
<beans profile="production">
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
<constructor-arg ref="hikariConfig"/>
</bean>
</beans>
<beans profile="development">
<jdbc:embedded-database id="dataSource" type="H2">
<jdbc:script location="classpath:/sql/createSchema.sql"/>
</jdbc:embedded-database>
</beans>
然后在启动应用程序时添加为参数:
-Dspring.profiles.active="development""