這兩天開始學習SpringBoot框架,按照官方的文件,很輕易地就把單模組的專案啟動了,但在使用maven搭建多模組的時候遇到了子模組配置檔案沒有載入的問題
專案架構是這樣的
zero
|-ws
|-service
|-dao
|-entity
zero的依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
ws的依賴和配置
<dependencies>
<dependency>
<groupId>cn.xmcui.zero</groupId>
<artifactId>service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--指定該class為全域性唯一入口-->
<mainClass>cn.xmcui.zero.Application</mainClass>
<fork>true</fork>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
ws的application.yml
server:
port: 80
servlet:
session:
timeout: 60
tomcat:
uri-encoding: utf-8
dao的依賴和配置
<dependencies>
<dependency>
<groupId>cn.xmcui.zero</groupId>
<artifactId>entity</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>
application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/zero?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: cn.xmcui.zero.entity
給啟動器類加註解
@SpringBootApplication(scanBasePackages = "cn.xmcui.zero")
@MapperScan(basePackages = "cn.xmcui.zero.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
執行
然後是喜聞樂見的報錯
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to configure a DataSource: `url` attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
沒有找到資料庫的配置檔案
找錯的過程很痛苦,找了很多資料,走了很多彎路,最後將dao層的application.yml
全部剪下到ws的application.yml
中,專案點亮,成功執行.這就明確到dao層的配置檔案沒有被載入.
然後找到了載入配置檔案的方法:
我將ws層application.yml
重新命名為application-dev.yml
;將dao層配置檔案重新命名為application-dao.yml
(讓配置檔案不重名,需要注意,配置檔案重新命名後必須以application-
做字首);
在ws層再新建一個application.yml
spring:
profiles:
active: dao,dev
這條配置是指定載入哪些配置檔案
操作完成,系統成功點亮
本來是很簡單的問題,卻浪費了我很長的時間,還有一件事情必須要吐槽一下,現在SpringBoot相關的部落格質量真是良莠不齊,相當數量的人還是把它當SpringMvc用;使用它,卻不用它的新特性,真的是毫無意義啊.
參考文獻:
https://blog.csdn.net/cw_hello1/article/details/79639448