使用Hibernate / JPA设置密码运行时

时间:2016-03-23 08:36:52

标签: java hibernate jpa

我有一个在persistence.xml中定义了数据库连接属性的Web应用程序。

我使用包含管理器持久性与使用@PersistenceContext注入的实体管理器。

今天DB的密码在persistence.xml文件中,但我宁愿设置它运行时(询问用户)。

我能够使用密码运行时创建一个新的EntityManager,但我怎样才能覆盖"注入的一个?

还有其他好的想法/方法吗?

1 个答案:

答案 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

这可以让您在需要时更改密码并退回服务器。无论如何,当您更改密码时,连接需要重新启动。理想情况下,这应该可以使工作变得轻松。