06、springboot工程起動投:Failed to determine a suitable driver class

2794 ワード

問題の説明:


commonプロジェクトでは、プロジェクト全体に対する統一異常処理を定義しますが、webプロジェクトではmianがエントリ構成パッケージスキャンを開始する必要があります.
package com.tc.town.web;

@ComponentScan(basePackages = {"com.tc.town.common"})
@SpringBootApplication
public class WebApplication {
    public static void main(String[] args) {
        SpringApplication.run(WebApplication.class,args);
    }
}

を使用してcommonエンジニアリングで定義された統合例外処理クラスをスキャンします.
package com.tc.town.common.exception;

// 
@ControllerAdvice
public class ExceptionCatch {

    private static final Logger LOGGER = LoggerFactory.getLogger(ExceptionCatch.class);

    // CustomException 
    @ExceptionHandler(CustomException.class)
    @ResponseBody
    public ResponseResult customException(CustomException customException){
        customException.printStackTrace();
        // 
        LOGGER.error("catch exception:{}",customException.getMessage());
        ResultCode resultCode = customException.getResultCode();
        return new ResponseResult(resultCode);
    }

    // Exception 
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ResponseResult exception(Exception exception){
        exception.printStackTrace();
        // 
        LOGGER.error("catch exception:{}",exception.getMessage());
         // 
         return new ResponseResult(CommonCode.SERVER_ERROR);  
    }
}

このとき、Webプロジェクトを開始します.
org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified and no embedded datasource could be auto-configured.
Reason: Failed to determine a suitable driver class

エラーの原因:


エラーのヒントに基づいて、明らかに教えてあげます.ドライバクラスが見つからないと言って、データソースを自動的に構成できません.
これはなぜですか.Webエンジニアリングがデータソース構成を定義しているのに、どうして見つからないのですか?
答えは、webエンジニアリングmianの起動方法のこの注記:@ComponentScan(basePackages={"com.tc.town.common"})
私の上の2つの工事のパッケージ構造をよく見てください.
Webエンジニアリング:package com.tc.town.web;
common工程:package com.tc.town.common;
原因は見つかりましたか?
なぜなら、私はwebエンジニアリングの上でスキャンcommonエンジニアリングパッケージ構造しか配置していないので、webエンジニアリングはcommonエンジニアリングパッケージ経路をスキャンするだけで、自分のwebエンジニアリングの経路構造をスキャンしません.これにより、ドロップを開始するとドライバクラスが見つからず、データソースを自動的に構成できなくなります.

ソリューション:


自分のウェブエンジニアリングのパッケージスキャンが見つからない以上、定義すればいいです.
@ComponentScan(basePackages = {"com.tc.town.common","com.tc.town.web"})
@SpringBootApplication
public class WebApplication {

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