

Maven, Spring4, SpringDataJPAを使ったWEBアプリケーションを作成しており、  
おおまかですが、下記のような構成になっています。

spring-webプロジェクト

web.xm

[code]

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:application-config.xml</param-value>
    </context-param>
    
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
[/code]

spring-context.xml

[code]

    <import resource="classpath:spring-datasource.xml"/>
    
    <context:component-scan base-package="{package}"/>
    
    <mvc:annotation-driven />
    
    <mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
    <mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
    <mvc:resources mapping="/img/**" location="/WEB-INF/img/" />
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/view/"/>
            <property name="suffix" value=".jsp"/>
    </bean>
    
[/code]

database.properties

[code]

    hibernate.generate_statistics = true
    hibernate.show_sql = true
    
    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://host:3306/db
    jdbc.username=user
    jdbc.password=user
    
[/code]

spring-serviceプロジェクト

spring-datasource.xml

[code]

    <jdbc:embedded-database id="dataSource" type="H2">
        <jdbc:script location="classpath:schema.sql"/>
    </jdbc:embedded-database>
    
    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="persistenceProviderClass" value="org.hibernate.ejb.HibernatePersistence"/>
        <property name="packagesToScan" value="${package}"/>
        <property name="jpaProperties">
         <props>
            <prop key="hibernate.hbm2ddl.auto">create-drop</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
         </props>
      </property>
    </bean>
    
    <!-- jpa -->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>
    
    <context:property-placeholder location="classpath:database.properties"/>
    
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    
    <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="showSql" value="${hibernate.show_sql}"/>
        <property name="generateDdl" value="true"/>
        <property name="database" value="MYSQL"/>
    </bean>
    
    <tx:annotation-driven transaction-manager="transactionManager"/>
    
[/code]

この後、バッチプロジェクトにて  
DBの基本構造(spring-datasource.xmlまで)を共有したいのですが、  
spring-webプロジェクトでは設定ファイルがweb.xml始動であり、  
今後共通化するspring-batch(現状DB接続していない)プロジェクトでは、  
実行クラスから設定クラスを呼び出す形になっています。

main.java

[code]

    ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringBatchConfig.class);
    ExecClass o = ctx.getBean(ExecClass.class);
    o.execute();
    
[/code]

この場合、双方で設定方法が異なると、共通(spring-serviceプロジェクトのspring-context.xmlからspring-
datasource.xmlまで)の設定を読み込むことはできないのでしょうか？


CC BY-SA 3.0
2015-08-29T05:39:54.453
14990
2015-08-29T05:39:54.453
8396
question
java mysql spring
SpringDataJPAを使ったDB関連の設定を、異なる設定方法で共有する方法