Spring Boot開發時遇到的一系列問題及解決辦法總結

問題一java

Spring Boot掃描包提示找不到mapper的問題,異常信息內容:web

Consider defining a bean of type in your configuration

分析緣由:Spring Boot項目的Bean裝配默認規則是根據Application類所在的包位置從上往下掃描,「Application類」是指Spring Boot項目入口類。若是Application類所在的包爲:com.yoodb.blog,則只會掃描com.yoodb.blog包及其全部子包,若是service或dao所在包不在com.yoodb.blog及其子包下,則不會被掃描。spring

解決方法:數據庫

方式一:使用註解@ComponentScan(value=」com.yoodb.blog」),其中,com.yoodb.blog爲包路徑。json

方式二:將啓動類Application放在上一級包中,注意的是Application啓動類必需要保證在包的根目錄下。mvc

問題二app

啓動Spring Boot時,,拋出異常信息以下:ide

Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package

application.Java類文件內容以下:ui

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.boot.SpringApplication;
@Controller
@SpringBootApplication
@Configuration
public class HelloApplication {
    @RequestMapping("hello")
    @ResponseBody
    public String hello() {
        return "hello world!";
    }
    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }
}

分析緣由:Spring Boot啓動時,拋出「** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.」警告信息,這是因爲application.Java文件不能直接放在main/java文件夾下,必需要建一個包把它放進去。插件

解決辦法:Spring Boot在寫啓動類的時候若是不使用@ComponentScan指明對象掃描範圍,默認指掃描當前啓動類所在的包裏的對象,若是當前啓動類沒有包,則在啓動時會拋出上述警告信息,致使項目出錯。  

問題三

Spring Boot鏈接數據庫時,拋出異常信息以下:

caused by: java.lang.NoClassDefFoundError: javassist/bytecode/ClassFile

分析緣由:這是因爲缺乏javassist.jar包致使啓動失敗

解決辦法:經過Eclipse執行Maven命令重構項目:Maven-Update Project,等待下載jar包便可,若仍是失敗請手動添加javassist.jar包的pom.xml配置信息。

Spring Boot使用spring-data-jpa插件,拋出異常信息以下:

caused by: java.lang.illegalargumentexception: Not a managed type: class entity.User

分析緣由:這是因爲Spring Boot未找到實體對象指定的類名,缺乏jpa entity配置路徑

解決辦法:在Repository配置類前面添加註解@EntityScan('entity對應的包路徑')

問題四

Spring Boot返回json字符串,增長APPLICATION_JSON參數代碼以下:

mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))

在添加APPLICATION_JSON參數後,拋出「APPLICATION_JSON cannot be resolved or is not a field」異常信息。

分析緣由: Bean實體中存在getXsetX方法,可是沒有這個x屬性,將致使json轉換失敗,拋出「APPLICATION_JSON cannot be resolved or is not a field」異常信息。

解決辦法:去掉不存在屬性的getXsetX方法或者增長上改屬性便可。

相關文章
相關標籤/搜索