IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Boot Java Discussion :

Application Spring Boot simpliste avec persistence autre qu'en mémoire


Sujet :

Spring Boot Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 19
    Points : 13
    Points
    13
    Par défaut Application Spring Boot simpliste avec persistence autre qu'en mémoire
    Bonjour à tous,

    Je cale cette discussion dans la catégorie Tools, j'ai rien trouvé de plus adapté pour Boot. Faites moi savoir si ça ne convient pas.

    La question est du niveau tuto de grand débutant, j'utilise Spring 4 conjointement avec Boot (spring-boot-starter-parent 1.0.0.RC3) pour une webapp basique (la question demeurerais sans la partir web je pense).
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.thymeleaf</groupId>
                <artifactId>thymeleaf-spring4</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>1.3.174</version>
                <scope>runtime</scope>
            </dependency>

    Jusqu'ici tout va bien, les infos sont persistées en mémoire. Maintenant si je remplace le driver H2 par celui de Postgres :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
           <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>9.2-1003-jdbc4</version>
                <scope>runtime</scope>
            </dependency>

    J'obtiens cette exception lors du démarrage de Spring :

    org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [my.package.Repository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionExcept ion(DefaultListableBeanFactory.java:1100)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultList ableBeanFactory.java:960)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListab leBeanFactory.java:855)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElem ent.inject(AutowiredAnnotationBeanPostProcessor.ja va:480)
    La conf de cette DB est appellée par mon application.yml (à la racine de mon répertoire resources), ajouter PropertySource("classpath:application.yml") à mon application ne change rien.

    Par ailleurs, ma classe application a @Configuration, @ComponentScan, @EnableAutoConfiguration. Le repository évoqué dans l'exception ([my.package.Repository]) est autowired sur un contrôleur tout ce qu'il y a de plus basique.

    J'imagine que c'est tout bête d'autant que les quelques tutos que j'ai pu trouver à ce sujet n'en disent pas plus, mais je n'avance pas.

    Si d'ailleurs vous avez de la doc à proposer sur le sujet (autre que sur le site Spring et le Wiki GitHub), je suis preneur.

    Merci d'avance !

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    as-tu essayé de mettre les 2 dependances?
    Juste pour voir si ca marche.

    Eric

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Bonne piste, ça passe et ça tape dans H2 quelque soit l'ordre de déclaration.
    J'en déduit qu'il lui manque quelque chose pour l'autoconfiguration des DS autres qu'embedded.

    Dans le rapport d'autoconfiguration, catégorie negative matches, j'ai particulièrement (si H2 n'est pas présent) :
    DataSourceAutoConfiguration.DbcpConfiguration
    - org.apache.commons.dbcp.BasicDataSource DataSource class not found (DataSourceAutoConfiguration.BasicDatabaseCondition)

    DataSourceAutoConfiguration.EmbeddedConfiguration
    - no embedded database detected (DataSourceAutoConfiguration.EmbeddedDatabaseCondition)

    DataSourceAutoConfiguration.JdbcTemplateConfiguration
    - no existing bean configured database (DataSourceAutoConfiguration.DatabaseCondition)

    DataSourceAutoConfiguration.TomcatConfiguration
    - no database driver (DataSourceAutoConfiguration.TomcatDatabaseCondition)
    Bonne piste, mais je ne vois rien dans la doc qui justifie que le driver ne soit pas chargé. De ce que j'ai pu en lire, Boot créé automatiquement un pool tomcat et une datasource à partir de mes infos de configuration.

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    as-tu mis le fichier de configuration de postgreSQL ? et dit a ton application ou il se trouvait?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par jeffray03 Voir le message
    as-tu mis le fichier de configuration de postgreSQL ? et dit a ton application ou il se trouvait?
    Citation Envoyé par LeRiton Voir le message
    La conf de cette DB est appellée par mon application.yml (à la racine de mon répertoire resources), ajouter PropertySource("classpath:application.yml") à mon application ne change rien.
    Tu parles d'autre chose ?

  6. #6
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    t´es sur que ce n´est pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @PropertySource("classpath:application.properties")

  7. #7
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    et quand tu as changé de base de données, as-tu fait un maven --> update?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Si tu utilises le format properties (clé=valeur) oui, le YAML est cependant censé être supporté.

    Par acquis de conscience, j'ai quand même vérifié en reprenant le format "classique" properties : ça marche. Donc là, gros doute, YAML est censé être supporté, je vois dans la doc que c'est l'API SnakeYAML qui se charge de ça et qu'elle est inclue avec spring-boot-starter. Je vérifie mes dépendances transitives et y'a pas.

    Blague : la dépendance n'est pas inclue en RC3 mais en RC5... En updatant spring-boot-starter-parent en RC5, ça passe avec le fichier de config YAML, sans plus de modifs.

    Merci pour tes pistes en tout cas, tu m'as clairement mis sur la route. Problème résolu !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/07/2013, 16h06
  2. Projet lancé avec une autre application..COMMENT?
    Par zentaf dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 11/04/2007, 09h57
  3. Mise à jour application avec persistence
    Par bubu56 dans le forum Persistance des données
    Réponses: 2
    Dernier message: 10/04/2007, 11h10
  4. [Question] Discussion avec d'autres applications
    Par Bleys dans le forum Delphi
    Réponses: 7
    Dernier message: 04/03/2007, 21h22
  5. [VB6]Interractions avec d'autres applications
    Par dbozec dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 13/11/2005, 19h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo