首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring 4 Servlet和配置文件

Spring 4 Servlet和配置文件
EN

Stack Overflow用户
提问于 2014-05-02 16:02:40
回答 1查看 253关注 0票数 1

我有一个Spring4MVC Servlet,它使用JPA和spring-orm连接到数据库。我的applicationContext.xml文件包含以下内容:

代码语言:javascript
复制
<util:map id="persistenceUnitConfiguration">
    <entry key="javax.persistence.logging.level" value="INFO" />
    <entry key="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
    <entry key="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/DATABASE" />
    <entry key="javax.persistence.jdbc.user" value="USERNAME" />
    <entry key="javax.persistence.jdbc.password" value="PASSWORD" />
    <entry key="eclipselink.weaving" value="false" />
</util:map>

<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
      id="entityManagerFactory">
    <property name="persistenceUnitName" value="myPersistenceUnit" />
    <property name="jpaVendorAdapter" ref="jpaAdapter" />
    <property name="packagesToScan" value="my.package.entities" />
    <property name="jpaPropertyMap" ref="persistenceUnitConfiguration" />
</bean>

应用程序打包为WAR。我想以某种方式配置数据库、用户名和密码值,这样我就可以分发WAR,而没有人需要碰它。唯一要做的就是在某个地方编辑配置文件。

这样做的最佳方法是什么?

我是否可以在我的webapp引导过程中以编程方式设置jpaPropertyMap并在一个固定位置从配置文件中读取它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-02 16:07:21

创建一个类似于database.properties的属性文件:

代码语言:javascript
复制
db.user=youruser
db.password=yourpassword

然后在Spring应用程序配置文件中添加

代码语言:javascript
复制
<context:property-placeholder location="classpath:my/package/config/database.properties" />

现在您可以使用表达式语言语法访问这些属性:

代码语言:javascript
复制
<bean ...>
    <property name="dbUser" value="${db.user}" />
    <property name="dbPassword" value="${db.password}" />
</bean>

如果使用注释配置,则使用

代码语言:javascript
复制
@Component
public class YourBean {
    @Value( "${db.user}" )
    private String dbUser;

    @Value( "${db.password}" )
    private String dbPassword;
}

应用于您的情况,它将是(类似于更多的字段)

代码语言:javascript
复制
<util:map id="persistenceUnitConfiguration">
    <entry key="javax.persistence.logging.level" value="INFO" />
    <entry key="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
    <entry key="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/DATABASE" />
    <entry key="javax.persistence.jdbc.user" value="${db.user}" />
    <entry key="javax.persistence.jdbc.password" value="${db.password}" />
    <entry key="eclipselink.weaving" value="false" />
</util:map>

如果属性文件位于类路径之外,则使用file:

代码语言:javascript
复制
<context:property-placeholder location="file:/path/to/your/database.properties" />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23432349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档