我有一个在persistence.xml中定义了数据库连接属性的Web应用程序。
我使用包含管理器持久性与使用@PersistenceContext注入的实体管理器。
今天DB的密码在persistence.xml文件中,但我宁愿设置它运行时(询问用户)。
我能够使用密码运行时创建一个新的EntityManager,但我怎样才能覆盖"注入的一个?
还有其他好的想法/方法吗?
答案 0 :(得分:0)
是的,这有点担心为不同的环境配置配置文件。
虽然它不足以满足你的"运行时"设置密码并替换对象,但它将作为spring bean配置文件进行维护。
像这样;
@Configuration
@Profile("dev")
public class StandaloneDataConfig {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.HSQL)
.addScript("classpath:com/bank/config/sql/schema.sql")
.addScript("classpath:com/bank/config/sql/test-data.sql")
.build();
}
}
假设您要加载配置文件以进行生产?
您必须使用@Profile("production")
定义另一个配置文件,并从类路径位置加载属性文件。
使用春季启动,您可以激活您的个人资料
SPRING_PROFILES_ACTIVE=production mvn spring-boot:run
这可以让您在需要时更改密码并退回服务器。无论如何,当您更改密码时,连接需要重新启动。理想情况下,这应该可以使工作变得轻松。