2017-05-17 1 views
0

Je construis un projet Spring Boot + MyBatis en utilisant une base de données autonome postgresql.Initialisation de bases de données autonomes, Spring Boot et MyBatis

Eh bien, pour une raison quelconque, l'initialisation de base de données "conventionnelle" ne se produit pas. J'ai ajouté la source de données manuellement, créé des scripts sql, mais quand je lance le projet, à partir du journal, il ne traite même pas ces scripts. Je veux comprendre comment le processus fonctionne pour les bases de données non-embarquées.

Peut-on créer une instance de source de données en utilisant du code?

Dois-je lier la source de données dans un fichier de propriétés ou dans une classe séparée? Que faut-il faire pour lier une source de données séparée (postgresql dans ce cas) avec la configuration Spring Boot?

Répondre

1
  1. Oui

    @Bean 
    public DataSource dataSource() { 
        DataSourceBuilder.create() 
            .url("jdbc:postgresql://localhost:5432/database") 
            .username("username") 
            .password("password") 
            ... 
            .build(); 
    } 
    

    2-3. Vous pouvez utiliser le fichier de la propriété ainsi que de fournir DataSourceConfiguration basé sur Java

    spring.datasource.url: jdbc:postgresql://localhost:5432/database 
    spring.datasource.username: username 
    spring.datasource.password: pasword 
    

    Et fait référence ces propriétés dans votre classe de configuration comme suit:

    @Bean 
    @ConfigurationProperties(prefix = "spring.datasource") 
    public DataSource dataSource() { 
        return DataSourceBuilder.create().build(); 
    } 
    

Si vous avez une seule base de données pour se connecter à la le moyen le plus pratique consiste à ajouter ses propriétés de connexion dans le fichier de propriétés, préfixé avec spring.datasource (scroll here to check available options) et ajouter org.postgresql dépendance au fichier pom.xml (build.grade) et SpringBoot fera le reste.

+0

Merci pour la réponse. J'utilise le fichier 'application.properties', la connexion à la source de données est bien établie, mais il semble que springboot n'essaie même pas de se connecter. Je veux dire, les scripts 'schema.sql'' data.sql' doivent être exécutés avant le déploiement du serveur, et je ne le trace même pas dans les fichiers journaux, même en utilisant 'spring.jpa.show-sql = true'. –

+0

Si vous définissez la propriété 'spring.jpa.hibernate.ddl-auto' sur' create-drop' ou 'create', ces scripts sont omis. Le schéma est généré en fonction de vos entites et vous pouvez placer l'initialisation sql dans le fichier 'import.sql' à la racine du classpath. – dimuha