Spring Boot开发时遇到的一系列问题及解决办法总结

简介:

问题一

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实体中存在getXsetX方法,但是没有这个x属性,将导致json转换失败,抛出“APPLICATION_JSON cannot be resolved or is not a field”异常信息。

解决办法:去掉不存在属性的getXsetX方法或者增加上改属性即可。

目录
相关文章
|
16小时前
|
设计模式 JSON 前端开发
利用Spring MVC开发程序1
利用Spring MVC开发程序
10 0
|
2天前
|
Cloud Native Java 开发者
Spring Boot 3.0-未来企业应用开发的基石
Spring Boot 3.0还支持其他云原生技术,如服务网格、配置中心等。这些技术的集成进一步提升了应用程序的可观测性、可配置性和可维护性,使得企业能够更好地管理和监控应用程序的运行状态。
11 0
|
4天前
|
Java Spring 容器
Spring注解开发,bean的作用范围及生命周期、Spring注解开发依赖注入
Spring注解开发,bean的作用范围及生命周期、Spring注解开发依赖注入
14 1
Spring注解开发,bean的作用范围及生命周期、Spring注解开发依赖注入
|
13天前
|
Java 数据安全/隐私保护 Spring
Java 中 Spring Boot 框架下的 Email 开发
Java 中 Spring Boot 框架下的 Email 开发
264 2
|
14天前
|
前端开发 安全 Java
使用Spring框架加速Java开发
使用Spring框架加速Java开发
60 0
|
14天前
|
传感器 人工智能 前端开发
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
智慧校园电子班牌,坐落于班级的门口,适合于各类型学校的场景应用,班级学校日常内容更新可由班级自行管理,也可由学校统一管理。让我们一起看看,电子班牌有哪些功能呢?
110 4
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
|
14天前
|
IDE Java 开发工具
Spring Boot DevTools:加速开发的热部署工具
【4月更文挑战第28天】在Spring Boot的开发过程中,快速反馈和效率至关重要。Spring Boot DevTools是一个为开发者设计的模块,支持热部署(hot swapping),能够实现应用的快速重启和自动重载,极大地提高了开发效率。本篇博客将介绍Spring Boot DevTools的核心概念,并通过具体的实战示例展示如何在开发过程中利用这一工具。
29 0
|
14天前
|
开发框架 前端开发 安全
Java从入门到精通:2.2.2学习使用Spring框架进行Web应用开发
Java从入门到精通:2.2.2学习使用Spring框架进行Web应用开发
|
14天前
|
监控 Java 测试技术
使用 Spring Boot 简化企业级应用开发
【4月更文挑战第19天】Spring Boot简化企业级应用开发,加速项目初始化与配置,轻松集成多种技术,降低依赖管理复杂性。它提高开发效率,具备灵活扩展性,便于监控管理,且高度可测试。强大的社区支持解决问题迅速,助力企业快速推出高质量应用,提升市场竞争力。开发者掌握Spring Boot能增强自身价值。
|
14天前
|
前端开发 Java 应用服务中间件
选择 Spring Boot 进行微服务开发的 7 大理由
选择 Spring Boot 进行微服务开发的 7 大理由
26 1