问题一
Spring Boot 扫描包提示找不到 mapper 的问题, 异常信息内容:
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 及其子包下, 则不会被扫描.
解决方法:
方式一: 使用注解
@ComponentScan(value="com.yoodb.blog")
, 其中, com.yoodb.blog 为包路径.
方式二: 将启动类 Application 放在上一级包中, 注意的是 Application 启动类必须要保证在包的根目录下.
问题二
启动 Spring Boot 时,, 抛出异常信息如下:
Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package
application.Java 类文件内容如下:
- 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 实体中存在 getX 或 setX 方法, 但是没有这个 x 属性, 将导致 json 转换失败, 抛出 "APPLICATION_JSON cannot be resolved or is not a field" 异常信息.
解决办法: 去掉不存在属性的 getX 或 setX 方法或者增加上改属性即可.
来源: https://yq.aliyun.com/articles/621681