gpt4 book ai didi

java - Spring 4 Servlet 和配置文件

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:02 25 4
gpt4 key购买 nike

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

<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。我想以某种方式配置 DATABASE、USERNAME 和 PASSWORD 值,这样我就可以分发 WAR,而无需任何人接触它。唯一要做的就是在某处编辑配置文件。

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

我可以在 web 应用程序启动期间以编程方式设置 jpaPropertyMap 并从固定位置的配置文件中读取它吗?

最佳答案

创建一个属性文件,例如database.properties:

db.user=youruser
db.password=yourpassword

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

<context:property-placeholder location="classpath:my/package/config/database.properties" />

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

<bean ...>
<property name="dbUser" value="${db.user}" />
<property name="dbPassword" value="${db.password}" />
</bean>

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

@Component
public class YourBean {
@Value( "${db.user}" )
private String dbUser;

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

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

<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: 代替:

<context:property-placeholder location="file:/path/to/your/database.properties" />

关于java - Spring 4 Servlet 和配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23432349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com