web-dev-qa-db-fra.com

Spring comment définir la source de données dans Spring Boot

J'apprends tout simplement Spring et je me bats depuis deux jours sur la façon de configurer Spring JdbcTemplate pour qu'il utilise ma base de données PostgreSQL. Je ne sais pas comment faire ça. Je continue à lire la documentation (telle que http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jdbc.html ), mais il me semble que je vais faire le tour en cercles.

D'après les erreurs générées, il semble qu'il ne puisse pas instancier la classe RelationalDatabase que j'ai écrite en tant que bean. Je ne suis pas sûr de ce qu'il faudrait pour instancier la classe correctement.

Comment puis-je passer de quelque chose comme les guides (comme https://spring.io/guides/gs/relational-data-access/ ) qui fonctionnent totalement vers une solution plus complexe?

Classe de base de données relationnelle

@Repository
public class RelationalDatabase 
{

    private JdbcTemplate jdbcTemplate;

    public RelationalDatabase(){}


    public RelationalDatabase(JdbcTemplate jdbcTemplate)
    {
        this.jdbcTemplate = jdbcTemplate;
    }

    @Autowired
    public void setDataSource(javax.sql.DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }


    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

}

\src\main\resources\application-dev.properties

spring.datasource.url=jdbc:postgresql://192.168.56.102:5432/scibase
spring.datasource.type=org.postgresql.ds.PGPoolingDataSource 
spring.datasource.username=lemon
spring.datasource.password=XXXXXX
spring.datasource.platform=postgres
spring.datasource.max-active=100
spring.datasource.name=Lime
spring.database.driverClassName=org.postgresql.Drive

Trace de pile (Résumé)

org.springframework.beans.factory.BeanCreationException: Erreur lors de la création d'un bean avec le nom 'relationalDatabase': L'injection de dépendances autowired a échoué; L'exception imbriquée est org.springframework.beans.factory.BeanCreationException: impossible avec la méthode autowire: public void com.scientifi.papers.db.relational.RelationalDatabase.setDataSource (javax.sql.DataSource);

l'exception imbriquée est org.springframework.beans.factory.BeanCreationException: erreur lors de la création du bean avec le nom 'dataSource' défini dans la ressource de chemin de classe [org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration $ NonEmbeddedConfiguration.class] ;

l'exception imbriquée est org.springframework.beans.BeanInstantiationException: échec de l'instanciation [javax.sql.DataSource]: La méthode d'usine 'dataSource' a jeté une exception; L'exception imbriquée est org.springframework.boot.autoconfigure.jdbc.DataSourceProperties $ DataSourceBeanCreationException: impossible de déterminer la classe de pilote de base de données incorporée pour le type de base de données NONE. Si vous voulez une base de données intégrée, veuillez en placer une sur le chemin de classe. Si vous devez charger des paramètres de base de données à partir d'un profil particulier, vous devrez peut-être l'activer (les profils "dev" sont actuellement actifs).

Merci!

4
Prichmp

Avez-vous oublié le "r" dans Driver? ( Impossible de déterminer la classe de pilote de base de données intégrée pour le type de base de données NONE )

spring.database.driverClassName=org.postgresql.Driver

au lieu de

spring.database.driverClassName=org.postgresql.Drive
3
haihui

J'ai eu la même exception lorsque je testais mon application Spring Boot de Junit.

Je l'ai résolu à l'aide de @SpringApplicationConfiguration (classes = Application.class) au-dessus de la classe Junit Test. L'application Spring Boot ne s'initialisait pas correctement

0
dassum