2 votes

Projet Spring boot maven multi-modules avec Spring Data

J'ai une application Spring Boot (1.4.3.RELEASE) avec MySQL comme backend. J'utilise Spring Data avec Oracle UCP et la connexion Java de MySQL pour le pooling de connexion. Maintenant, j'essaie de le déplacer vers un projet multi-modules. La structure de mon projet est donc la suivante.

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

Mon pom.xml parent est le suivant :

<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>

Application.java dans web :

@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>

Dans mon référentiel pom.xml, j'ai spring-data

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

Mon code DataSource et les référentiels sont présents dans le projet de référentiel. J'ai mon code de sécurité Spring dans le module web qui utilise le module Service par injection.

J'obtiens l'erreur suivante lorsque je lance mon application de module web.

Erreur lors de la création d'un bean avec le nom 'webSecurityConfig' : Dépendance non satisfaite dépendance exprimée par le champ 'userDetailsService' ; exception imbriquée l'exception est org.springframework.beans.factory.UnsatisfiedDependencyException : Erreur lors de la création d'un bean avec le nom 'userDetailsService' : Dépendance non satisfaite exprimée par le champ 'userService' ; l'exception imbriquée est la suivante org.springframework.beans.factory.NoSuchBeanDefinitionException : Non bean qualifiant de type 'com.cc.test.db.service.UserService'. disponible : attendu au moins 1 bean qui se qualifie comme autowire candidat. Annotations de dépendance : {@org.springframework.beans.factory.annotation.Autowired(required=true)}

Y a-t-il une autre configuration manquante ?

Les beans du module service impl ne sont pas découverts au démarrage.

Merci

-1voto

cisk Points 329

Le paquet com.cc.test.db.service n'est pas analysé selon votre configuration.

Ajoutez-le.

Votre annotation devrait ressembler à ceci :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X