如何在hibernate配置文件中使用环境变量?

时间:2016-11-06 05:37:56

标签: java database spring hibernate java-ee

我目前正在通过属性文件在hibernate(Version 4.0.1)文件中使用数据库参数。

我想从环境变量中使用一些数据库参数。如何从java文件中获取值并在上下文中加载之前设置为xml文件。

<bean id="propertyConfigurer"
    class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer">
        <constructor-arg ref="configurationEncryptor" />
        <property name="locations">
            <list>
                <value>classpath:/test/demo/prop/DataParam.properties</value>
            </list>
        </property>
    </bean>

<bean id="data" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass">
            <value>${driverClass}</value>
        </property>
        <property name="jdbcUrl">
            <value>${dbconnecturl}</value>
        </property> 
        .
        .
        .
</beans>

我有一个想法,可以创建一个Configuration类的对象,但我不知道在哪里编写该代码以及如何实现它。

2 个答案:

答案 0 :(得分:1)

您需要使用 spring expression language 来配置OS environemnt变量的属性,如下所示:

<bean id="propertyConfigurer"
        class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer">
            <constructor-arg ref="configurationEncryptor" />
            <property name="locations">
                <list>
                    <value>classpath:/test/demo/prop/DataParam.properties</value>
                </list>
            </property>
        </bean>

    <bean id="data" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass">
                <value>#{ systemProperties['driverClass']}</value>
            </property>
            <property name="jdbcUrl">
                <value>#{ systemProperties['dbconnecturl']}</value>
            </property> 
            .
            .
            .
    </beans>

答案 1 :(得分:1)

例如,您可以使用<property name="username" value="#{systemProperties['dbUsername']}"/>

变量 systemProperties 是预定义的,您可以查看Xml Based Configuration了解更多详情。