2017-07-27 1 views
0

Ich versuche nur mit Federverschluß gepoolt tomcat Datenquelle zu verwenden, indem Sie Eigenschaften in application.yml Datei angeben wie folgt:Wenn tomcat gepoolten Datenquelle in springboot mit erhalte ich keine qualifizierten Bean vom Typ ‚javax.sql.DataSource‘

spring: 
    data: 
    jpa: 
     repositories: 
     enabled: true 
    datasource: 
    tomcat: 
     max-active: 50 
     max-wait: 10000 
     username: postgres 
     password: root 
     url: jdbc:postgresql://localhost:5432/proj 
     driver-class-name: org.postgresql.Driver 

ich

Caused by: org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active).

ich verstehe nicht, warum springboot versucht, eine eingebettete Datenquelle zu erstellen. Ist das das erwartete Verhalten für eine gepoolte Datenquelle?

Ich sah in einigen Foren, dass Spring-JDBC-Abhängigkeit dieses Problem verursachen kann, so dass ich jede Spring-JDBC-Abhängigkeit ausgeschlossen. Nein ich

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.sql.DataSource' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) 
     at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) 
     at org.springframework.beans.factory 
.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) 

POM Datei

http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0

<groupId>com.yyyy.xxxx</groupId> 
<artifactId>demo</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>xxxx</name> 
<description>xxxx project</description> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.4.RELEASE</version> 
    <relativePath /> <!-- lookup parent from repository --> 
</parent> 

<properties> 
    <kotlin.compiler.incremental>true</kotlin.compiler.incremental> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <java.version>1.8</java.version> 
    <jsoup.version>1.10.3</jsoup.version> 
    <log4j.version>1.2.17</log4j.version> 
</properties> 

<organization> 
    <name>SA Technologies</name> 
    <url>www.satechnologies.com</url> 
</organization> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-amqp</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.apache.httpcomponents</groupId> 
       <artifactId>httpclient</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-aop</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-cache</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-jdbc</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-hateoas</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-mail</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-validation</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-autoconfigure</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.6</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.jsoup</groupId> 
     <artifactId>jsoup</artifactId> 
     <version>${jsoup.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate</artifactId> 
     <version>3.5.4-Final</version> 
     <type>pom</type> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient</artifactId> 
     <version>4.5.2</version><!--$NO-MVN-MAN-VER$ --> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjweaver</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-core</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
     <version>1.4.196</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>${log4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.assertj</groupId> 
     <artifactId>assertj-core</artifactId> 
     <version>3.8.0</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat</groupId> 
     <artifactId>tomcat-jdbc</artifactId> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>de.jpdigital</groupId> 
      <artifactId>hibernate5-ddl-maven-plugin</artifactId> 
      <version>1.0.1-hibernate-5.1.2.Final</version> 
      <configuration> 
       <dialects> 
        <param>POSTGRESQL9</param> 
        <param>SQLSERVER2012</param> 
       </dialects> 
       <packages> 
        <param>com.yyyy.xxxx.model</param> 
       </packages> 
       <outputDirectory>${project.basedir}/docs/sql</outputDirectory> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>gen-ddl</goal> 
        </goals> 
        <phase>process-classes</phase> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

@EnableJpaRepositories(basePackages = { "com.yyyy.xxxx.persistence.repositories" }) 
@EnableTransactionManagement 
@EntityScan(basePackages = { "com.yyyy.xxxx.persistence.model" }) 
@Configuration 
public class PersistenceConfig { 

} 

@Configuration 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addInterceptors(InterceptorRegistry registry) { 
     registry.addInterceptor(new LoggingInterceptor()); 
    } 
} 

@SpringBootApplication(scanBasePackages = { "com.yyyy.xxxx" }) 
public class XxxxApplication extends SpringBootServletInitializer { 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(XxxxApplication.class); 
    } 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(XxxxApplication.class, args); 
    } 
} 

Jeder kann helfen, bitte?

+0

Können Sie Ihre Konfiguration und POM-Datei hochladen? – Afridi

+0

Fügen Sie diese Abhängigkeit und lassen Sie mich wissen: \t \t \t org.springframework.boot \t \t \t Feder-boot-Starter-jdbc \t \t Afridi

+0

Ich habe hinzugefügt, aber ich habe immer noch die Ausnahme: Erstellt von: org.springframework.boot.autoconfigure.jdbc.DataSourceProperties $ DataSourceBeanCreationException: Die Klasse der eingebetteten Datenbanktreiber für den Datenbanktyp NONE kann nicht ermittelt werden. Wenn Sie eine eingebettete Datenbank wünschen, legen Sie eine unterstützte Datenbank auf den Klassenpfad. Wenn Sie Datenbankeinstellungen aus einem bestimmten Profil laden möchten, müssen Sie diese möglicherweise aktivieren (die Profile "lokal" sind derzeit aktiv). Ich habe ein lokales Profil hinzugefügt und es standardmäßig aktiviert. Der Ausnahmetext führt mich in die Irre ... – Sofiane

Antwort

0

So ist die korrekte Einstellung ist

spring: 
    profiles.active: local 
    data: 
    jpa: 
     repositories: 
     enabled: true 

    datasource: 
    type: org.apache.tomcat.jdbc.pool.DataSource 
    username: postgres 
    password: root 
    url: jdbc:postgresql://localhost:5433/proj 
    driver-class-name: org.postgresql.Driver 
    platform: org.hibernate.dialect.PostgreSQLDialect 
    tomcat: 
     max-active: 200 
     max-age: 1000 
     max-wait: 10000 
     removeAbandonedTimeout: 30 
     initial-size: 20 
     validation-query: SELECT 1 
    jpa: 
    database: postgresql 
    generate-ddl: true 
    show-sql: true 
    hibernate: 
     ddl-auto: none 
    database-platform: org.hibernate.dialect.PostgreSQLDialect 
0

Diese 4 Eigenschaften befinden sich unter der Datenquelle, nicht Tomcat.

username: postgres 
    password: root 
    url: jdbc:postgresql://localhost:5432/proj 
    driver-class-name: org.postgresql.Driver 

Werfen Sie einen Blick auf DataSourceProperties hier https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceProperties.java

Weitere Referenz: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-use-yaml-for-external-properties

+0

Diese Eigenschaften existieren unter tomcat property. Das ist also nicht der Grund. – Sofiane

+0

Vielleicht, aber in Bezug auf die Ausnahme, die Sie gepostet haben, spielen Tomcat-Eigenschaften keine Rolle. Entscheidend ist, dass die Eigenschaften von spring.datasource. * Mindestens minimal gesetzt sind. Diese Ausnahme 'org.springframework.boot.autoconfigure.jdbc.DataSourceProperties $ DataSourceBeanCreationException "wird in dieser Zeile geworfen https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ jdbc/DataSourceProperties.java # L245. Schließen Sie auch keine jdbc-Bibliotheken aus, die automatisch in den Spring-Boot-Startern enthalten sind. – ryan2049

Verwandte Themen