SpringBoot加載子模塊配置文件的方法


這兩天開始學習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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM