2016-05-17 8 views
1

Ich habe a guide zum Erstellen von einfachen Spring-Start-App mit JPA gefolgt und wenn Anwendung abgeschlossen wurde sollte Datenbankverbindung basierend auf Konfiguration von application.properties Datei jedoch erstellt werden es ist nicht passiert (ich bekomme Kein verwalteter Typ Ausnahmen). Ich weiß, dass dies issuse mit der Datei application.properties ist, da App korrekt ausgeführt wird, wenn ich es manuell wie here konfiguriere.Spring Boot erstellt keine automatische Konfiguration für die Datenbank aus application.properties

Projektstruktur: Project structure

pom.xml:

<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/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>demo.tomek</groupId> 
<artifactId>SpringMVC</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.3.5.RELEASE</version> 
</parent> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
    </dependency> 

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


</dependencies> 

<properties> 
    <java.version>1.8</java.version> 
    <maven.compiler.source>1.8</maven.compiler.source> 
    <maven.compiler.target>1.8</maven.compiler.target> 
</properties> 

<repositories> 
    <repository> 
     <id>spring-releases</id> 
     <name>Spring Releases</name> 
     <url>https://repo.spring.io/libs-release</url> 
    </repository> 
</repositories> 
<pluginRepositories> 
    <pluginRepository> 
     <id>spring-releases</id> 
     <url>https://repo.spring.io/libs-release</url> 
    </pluginRepository> 
</pluginRepositories> 


<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.1</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

application.properties Datei:

spring.datasource.url = jdbc:mysql://localhost:3306/TEST?createIfNotExists=true 
spring.datasource.driverClassName = com.mysql.jdbc.Driver 
spring.datasource.username=root 
spring.datasource.password=but 

spring.jpa.show-sql=true 

# Enable spring data repos 
spring.data.jpa.repositories.enabled=true 
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect 
spring.jpa.hibernate.ddl-auto=update 

spring.thymeleaf.cache=false 
spring.template.cache=false 

static void main()

@SpringBootApplication 
@ComponentScan("demo") 
@EnableJpaRepositories("demo") 
public class SpringBootTEST { 

    public static void main(String[] args) { 
     ApplicationContext ctx = SpringApplication.run(SpringBootTEST.class, args); 

     ProductService pRepo = ctx.getBean("productService", ProductService.class); 
     pRepo.addSomeProducts(); 
     CustomerService cRepo = ctx.getBean("customerService", CustomerService.class); 
     cRepo.addSomeCustomers(); 
    } 
} 

mich wieder betonen lassen: alles funktioniert gut, wenn ich es wie hier manuell konfigurieren: http://www.baeldung.com/2011/12/13/the-persistence-layer-with-spring-3-1-and-jpa/

ich die Ideen ausgehen ...

+1

Verschieben Sie Ihre 'SpringBootTEST'-Klasse in das' demo'-Paket. Entfernen Sie alle Annotations außer der '@ SpringBootApplication' und starten Sie sie neu. –

+0

@M.Deinum Ich habe es versucht ... und es hat auch funktioniert :) – Tomasz

Antwort

1

Da sich Ihre Entitäten nicht in einem Unterpaket Ihrer Anwendungsklasse befinden, müssen Sie auch die folgende Annotation zu SpringBootTEST hinzufügen, damit Hibernate Ihre Entitätsklassen scannen kann:

@EntityScan("demo.database") 

Alternativ sollte es auch funktionieren, wenn Sie das Paket in der SpringBootApplication Anmerkung an:

@SpringBootApplication("demo") 

Dann sollten Sie auch in der Lage sein, den benutzerdefinierten @ComponentScan und @EnableJpaRepositories Anmerkung zu entfernen.

+0

Ich dachte @ComponentScan wird damit umgehen. Ich habe versucht, auch andere Anmerkungen zu löschen, aber es hat nicht funktioniert und ich musste sie so lassen wie sie waren. – Tomasz

Verwandte Themen