我正在尝试根据某个 Maven 配置文件是否处于活动状态来配置带有数据库信息的 Spring 配置文件。我已经看到了一些答案,但我无法将它们放在一起。
我有一个这样的 Maven 配置文件:
<profiles>
<profile>
<id>production</id>
<activation>
<property>
<name>environment.type</name>
<value>prod</value>
</property>
</activation>
</profile>
<profile>
<id>development</id>
<activation>
<property>
<name>environment.type</name>
<value>dev</value>
</property>
</activation>
<!-- Database properties for Spring -->
<properties>
<db.driver>oracle.jdbc.driver.OracleDriver</db.driver>
<db.type>oracle</db.type>
<db.host>192.168.0.0</db.host>
<db.port>1521</db.port>
<db.name>myDb</db.name>
<db.url>jdbc:${db.type}:thin:@${db.host}:${db.port}:${db.name}</db.url>
</properties>
还有一个像这样的 settings.xml 文件:
<servers>
<server>
<id>development</id>
<username>jsmith</username>
<password>secret</password>
</server>
</servers>
....
<profiles>
<profile>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<environment.type>dev</environment.type>
</properties>
</profile>
</profiles>
在 servlet-context.xml 中:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>${db.driver}</value>
</property>
<property name="url">
<value>${db.url}</value>
</property>
<property name="username">
<value>${db.username}</value>
</property>
<property name="password">
<value>${db.password}</value>
</property>
<property name="maxActive">
<value>10</value>
</property>
<property name="maxIdle">
<value>1</value>
</property>
</bean>
我的问题基本上是,如何将 Maven 属性放入 servlet-context.xml 文件中?我需要一个 .properties 文件吗?我对 Maven 中的过滤和 Spring 中的 PropertyPlaceholderConfigurer 了解一些,但我不知道如何将它们组合在一起——或者它们是否组合在一起?或者有没有更简单的方法?