2017-02-26 48 views
0

我將我的項目分成多個模塊,core負責數據庫訪問,業務邏輯等。然後還有一個模塊提供了一個graphql API。 graphql模塊具有core作爲其依賴項,但core模塊中application.yml文件的配置似乎未加載。多模塊項目中的數據庫配置

設置

核心 - Application.class

package project.core; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.context.annotation.ComponentScan; 

@ComponentScan 
@SpringBootApplication 
public class Application { 

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

application.yml

spring: 
    application: 
    name: core # Identify this application 
    datasource: 
    url: jdbc:postgresql://localhost:5432/project 
    username: user 
    password: something 
    driver-class-name: org.postgresql.Driver 
    jpa: 
    database-platform: org.hibernate.dialect.PostgreSQLDialect 
    show-sql: true 
    hibernate: 
     ddl-auto: create 

logging: 
    level: 
    org.springframework: 
     web: TRACE 
     security: TRACE 

GRAPHQL模塊 - POM德普

<dependencies> 
    <dependency> 
     <groupId>project</groupId> 
     <artifactId>core</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
</dependencies> 

Application.class

@EnableAutoConfiguration 
@ComponentScan({"project.core", "project.graphql"}) 
public class ProjectGraphQL { 
    public static void main(String[] args) throws Exception { 
     SpringApplication.run(ProjectGraphQL.class, args); 
    } 
} 

添加core@ComponentScan固定的問題,JPA,但現在我得到了以下錯誤消息。

***************************應用程序未能啓動


說明:

無法確定數據庫類型爲NONE的嵌入式數據庫驅動程序類

我錯過了什麼?我相信我可以將配置複製到我的graphql配置中,但我寧願將所有數據庫內容都保留在該模塊之外。

回答

0

我找到了解決辦法,在這裏我告訴graphql應用程序在哪裏可以找到application.properties文件(YML不與@PropertySource支持),以及在哪裏掃描JpaRepositoriesEntities,定義@ComponentScan的包是不夠的。

@SpringBootApplication 
@PropertySource(value = {"core-application.properties", "application.properties"}) 
@ComponentScan({"project.core", "project.graphql"}) 
@EnableJpaRepositories("project.core") 
@EntityScan("project.core") 
@EnableTransactionManagement 
public class ProjectGraphQL { 
    public static void main(String[] args) throws Exception { 
     SpringApplication.run(ProjectGraphQL.class, args); 
    } 
} 

我不是真正的快樂與額外的配置和在.yml切換到.properties,但至少現在的工作。

0

您不應該以這種方式混合模塊。在運行應用程序時,Spring Boot執行的功能不僅僅是組件掃描。

保持模塊分開,並使用應用程序上下文結構:

@EnableAutoConfiguration 
@ComponentScan 
public class ProjectGraphQL { 
    public static void main(String[] args) { 
     new SpringApplicationBuilder() 
      .parent(Application.class) 
      .child(ProjectGraphQL.class) 
      .run(args); 
    } 
} 
+0

謝謝,但遺憾的是錯誤信息保持不變。 – KenavR