使用Spring Data的Spring启动maven多模块项目

时间:2017-01-17 01:59:49

标签: maven spring-boot spring-data-jpa

我有一个Spring引导(1.4.3.RELEASE)应用程序,MySQL作为后端。将Spring Data与Oracle UCP和MySQL Java连接一起用于连接池。现在,尝试将其移至多模块项目。因此我的项目结构如下。

parent project
|---pom.xml  -> This is a parent pom.
|---common
    |---pom.xml
    |---src
|---model
    |---pom.xml
    |---src
|---service(Interface only)
    |---pom.xml
    |---src
|---service Impl(Implementations only)
    |---pom.xml
    |---src
|---repository(Spring Data)
    |---pom.xml
    |---src
|---web
    |---pom.xml
    |---src

我的父pom.xml如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/maven-v4_0_0.xsd">

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.3.RELEASE</version>
        <relativePath />
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.test</groupId>
    <artifactId>test-parent</artifactId>
    <packaging>pom</packaging>
    <version>1.0.0-SNAPSHOT</version>
    <name>Test Project</name>
    <description>Test components</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>      
        <version.spring.boot>1.4.3.RELEASE</version.spring.boot>
        <version.mysql.connector>6.0.5</version.mysql.connector>
        <version.slf4j>1.7.21</version.slf4j>

    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- Spring -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <version>${version.spring.boot}</version>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${version.slf4j}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <modules>
    <module>cc-model</module>
    <module>cc-common</module>
    <module>cc-dbrepo</module>
    <module>cc-dbservice</module>
    <module>cc-dbserviceimpl</module>
    <module>cc-web</module>
</modules>

</project>

Web中的Application.java:

@SpringBootApplication(scanBasePackages = 
            { "com.test.dbrepo.service.impl", "com.test.db.service", "com.test.dbrepo.repository" })
public class DialerApplication {

web pom.xml:

<dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>

       <dependency>
        <groupId>com.cc.dialer</groupId>
        <artifactId>cc-dbservice</artifactId>
        <version>${project.version}</version>
    </dependency>

在我的存储库pom.xml中,我有spring-data

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

我的DataSource代码和存储库位于存储库项目中。 我在Web模块中有我的Spring安全代码,它通过注入使用服务模块。

启动Web模块应用程序时出现以下错误。

  

使用名称&#39; webSecurityConfig创建bean时出错&#39;:不满意   通过字段“userDetailsS​​ervice”表达的依赖关系;嵌套   例外是   org.springframework.beans.factory.UnsatisfiedDependencyException:   创建名称为&#39; userDetailsS​​ervice&#39;:不满意的bean时出错   通过字段“用户服务”表达的依赖关系;嵌套异常是   org.springframework.beans.factory.NoSuchBeanDefinitionException:没有   属于&#39; com.cc.test.db.service.UserService&#39;的限定bean   可用:预计至少有1个符合autowire资格的bean   候选人。依赖注释:   {@ org.springframework.beans.factory.annotation.Autowired(所需=真)}

是否缺少其他配置。

启动时未发现service impl模块中的Bean。

由于

1 个答案:

答案 0 :(得分:-1)

根据您的配置不扫描包com.cc.test.db.service。

添加它。

您的注释应如下所示:

@SpringBootApplication(scanBasePackages = 
            { "com.test.dbrepo.service.impl", "com.test.db.service", "com.test.dbrepo.repository", "com.cc.test.db.service" })