我有一个包含数据库连接信息的JDBC.properties文件
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.dialect=org.hibernate.dialect.MySQLDialect
jdbc.databaseurl=jdbc:mysql://127.0.0.1/mydb
jdbc.username=root
jdbc.password=
现在,当我在服务器中使用它时,我的信息会发生变化
jdbc.username=root
jdbc.password=mypassword
我现在所做的是在制作war文件之前手动更改此信息并将其上传到服务器。
现在我想知道是否有任何方法可以设置此信息,以便我不必每次上传前都更改此信息
怎么做?
答案 0 :(得分:4)
不要将您的属性放在war文件中。将它们外化。把它们放在一个众所周知的路径中(/etc/myapp/jdbc.properties)。
您不应该为生产,开发和测试环境创建不同的工件。应该是一样的。重新创建工件意味着一个新版本(理论上)意味着新的测试。即使你使用maven配置文件。
我倾向于使用的方法是将一些默认值放在内部属性文件中,并可选择从战争外部加载文件。这样,您就可以为用户提供覆盖默认配置的可能性。
<context:property-placeholder location="classpath:/jdbc.propertes,file:/etc/myapp/jdbc.properties" igonre-resource-not-found="true" />
这样您的默认值就在应用程序内部,用户可以通过在/etc/myapp/jdbc.properties
文件中指定其他属性来覆盖它。
答案 1 :(得分:3)
您可以使用弹簧配置文件。这篇博文应该会给你一个想法:http://spring.io/blog/2011/02/11/spring-framework-3-1-m1-released/
答案 2 :(得分:2)
您应该使用像Maven这样的构建工具,并使用资源过滤和配置文件执行此操作。
通过Spring配置文件执行它可能是一种方式,但在我看来,通过构建处理它更有意义。
使用Maven考虑以下内容:
<强>的src /主/资源/ jdbc.properties:强>
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.dialect=org.hibernate.dialect.MySQLDialect
jdbc.databaseurl=${jdbc.databaseurl}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
<强>的pom.xml:强>
<project ...>
...
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
...
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<jdbc.databaseurl>jdbc:mysql://127.0.0.1/mydb</jdbc.databaseurl>
<jdbc.username>username</jdbc.username>
<jdbc.password>password</jdbc.password>
</properties>
...
</profile>
<profile>
<id>prod</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<jdbc.databaseurl>jdbc:mysql://212.123.45.6/mydb</jdbc.databaseurl>
<jdbc.username>username</jdbc.username>
<jdbc.password>secret-password</jdbc.password>
</properties>
...
</profile>
</profiles>
...
</project>
对于开发,请调用:
mvn clean package ... -Pdev
同样适用于制作:
mvn clean package ... -Pprod
Maven过滤允许您根据Maven中通过.properties
定义的属性替换<properties/>
资源中的属性(无论是否在配置文件中)。
参考文献: - Resource filtering - Profiles