Spring 3中使用maven的jdbc属性

我正在春季开发一个maven多模块项目。我有两个项目。 我在项目A中有一个名为jdbc.properties的属性文件(它包含数据库用户名,密码),但项目B没有jdbc.properties。 我已经在项目b中包含项目a作为依赖项,以便在Projet b中获得项目a的一些通用代码。 我的问题是我如何使用maven在项目b的spring-context.xml文件中使用Project A jdbc.properties的属性

application-context.xml(SNIPPET)

<property name="jdbcUrl" value="${jdbc.url}"/>
 <property name="user" value="${jdbc.username}"/>
 <property name="password" value="${jdbc.password}"/>

这是我的项目的结构

**Projects**
 - Project A
src/main/java
  +src/main/resource
    -Database.properties
    Database file has following properties 
    jdbc.driverClassName=org.h2.Driver
    jdbc.url=jdbc:h2:tcp://localhost/~/tododb
    jdbc.username=sa
    jdbc.password=
    jpa.database=H2
    jpa.showSql=true
    pom.xml

 - Project b
  +src/main/java
  src/main/resource (don't want to have jdbc.properties file in this project)
  pom.xml (I have added Project as dependencies in Project B because 
  i am using some  common classes of project a in project b) 

这两个项目的POM配置都是POM文件

 - Project A (pom.xml)
  <parent>
    <groupId>com.ambientideas</groupId>
    <artifactId>sample08-multimodulejava-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>com.ambientideas1</groupId>
  <artifactId>sample-multimodulejava-module1</artifactId>
  <name>sample application 1</name>
  <packaging>jar</packaging> 
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

 - Project B (Pom.xml)
  <parent>
    <groupId>com.ambientideas</groupId>
    <artifactId>sample08-multimodulejava-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>sample-multimodulejava-module2</artifactId>
    <packaging>jar</packaging> 
<dependencies> (using Project a common classes in project b)
        <dependency>
            <groupId>com.ambientideas1</groupId>
            <artifactId>sample-multimodulejava-module1</artifactId>
            <version>${version}</version>
        </dependency>
</dependencies> 
</project>

这里是我的项目的Spring配置的两个jdbc-context.jdbc文件。 现在Spring配置

In Both Projects (Project a, Project b), i have two jdbc.content.xml files( Spring xml's)

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<context:property-placeholder location="/META-INF/classes/jdbc.properties" /> 
    <property name="driverClass" value="${jdbc.driverClassName}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        </bean> 

问题:我不想在项目A和项目b中有两个database.proprties文件。 我想要的是我只想在项目A中只有一个jdbc.properties文件,然后想要使用项目B中的项目A的JDBC.propties文件的属性。

    <property name="driverClass" value="${jdbc.driverClassName}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        </bean>

有什么办法可以做到吗? 这里是项目B pom.xml的结构

    <project>
    <parent>
    <groupId>com.ambientideas</groupId>
    <artifactId>sample08-multimodulejava-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>sample-multimodulejava-module2</artifactId>
    <packaging>jar</packaging> 
    <dependencies>
    <dependency>
    <groupId>com.ambientideas1</groupId>
    <artifactId>sample-multimodulejava-module1</artifactId>
    <version>${version}</version>
    <description>Project B<description>
</dependency>
    </dependencies> 
    </project>

提前致谢。


如果您的属性文件内置于Project A的jar中,那么它将在classpath中可用于加载其他任何代码,所以您应该能够像使用相同的方式在Project B中使用它它来自项目A.

请注意,这只是一个方便的事故,绝对不是我建议设置项目的方式。 配置应该始终是外部化的,以便您的工件独立于任何环境。

PS Ambient Ideas? 那不是马修麦卡洛的公司吗? 如果是这样的话,那么您在Java中就拥有大量的内部专业知识,特别是Maven。 你不应该需要很多外部指导。

链接地址: http://www.djcxy.com/p/62951.html

上一篇: jdbc properties in Spring 3 using maven

下一篇: Hibernate context initialization error when running Maven Test