其他分享
首页 > 其他分享> > 使用Maven和Spring控制项目:如何使用Maven配置文件设置Spring配置文件?

使用Maven和Spring控制项目:如何使用Maven配置文件设置Spring配置文件?

作者:互联网

我正在尝试根据某个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文件吗?我对Spring中Maven和PropertyPlaceholderConfigurer的过滤有所了解,但我不知道如何将它们放在一起 – 或者它们是否一起使用?或者有更简单的方法吗?

解决方法:

我需要.properties文件吗?

一般来说,YES,您需要使用.properties文件,这是我们通常所做的,特别是对于处理Spring上下文文件中的数据库连接配置.

.properties文件的目的是提供在应用程序运行时配置数据库连接的功能(对于Web应用程序,通常需要在.properties文件更改后重新启动应用程序容器/服务器).这通常在不同环境(DEV / TEST / UAT / PROD)中的应用程序部署/安装步骤中完成.

将这些数据库连接设置存储在pom.xml中不是一个好习惯,因为pom.xml的目的是用于项目描述,并且仅在应用程序构建时使用一次(例如mvn deploy).并且在大多数情况下,即使它被打包到最终的jar / war文件中,我们在构建应用程序之后并不真正关心并触摸它.

要在spring上下文中使用.properties文件,请在applicationContext中定义propertyConfigurer bean,例如:

<bean id="propertyConfigurer"
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
    <list>
      <!-- Default location inside war file -->
      <value>classpath:db.properties</value>
      <!-- Environment specific location, a fixed path on server -->
      <value>file:///opt/my-web-app/conf/db.properties</value>
    </list>
  </property>
  <property name="ignoreResourceNotFound" value="true"/>
</bean>

希望这是有道理的.

标签:java,spring,maven,configuration-files
来源: https://codeday.me/bug/20190927/1822631.html