目录
4、使用 Mybatis Generator 自动生成实体类、mapper和mapper.xml文件
1、刚建好项目,啥都没干呢就看到 index.jsp 红叉,如下:
2、项目基本写完,没看到红叉之类的错误提示,但是一运行,报错
一、为嘛子要学习Springboot
Springboot已经成为基本技能要求的基本。我不知道这样说语言能通不,只是看到现在各种招聘什么的,基本要求都是分布式、微服务、springboot、springcloud、redis、消息中间件 等。就算有的招聘上还写的SSM等,到时候面试的时候问用过什么框架啥的。问完,你只用过ssm或ssh,他也会问你对于springboot、springcloud等是否有经验。很多地方,一听,不会cloud基本就pass掉你。所以,看起来springcloud已经成为必会的基本技能,而学习springcloud,你就抛不开springboot的使用,毕竟springboot建立项目确实快。
二、简单的说下springboot
简单粗暴的说,springboot就是让你建项目和使用插件等简单很多很多,让你更快更便捷的建立一个项目,减少你在配置上浪费的时间。
打个比方,就像你要吃饭,过去的吃饭,就得准备各种食材调料,按一定的顺序或者说手法等去处理和调配他们,让他们成为能够下咽的几个菜。而springboot就像你有点钱了,下馆子了,去到饭店,一看菜单,嗯~有套餐,就给服务员说,来个AAA套餐,你不用说要什么菜,也不需要知道这些菜有什么食材和调料。反正付了钱直接吃就是了。
约定大于配置,化繁为简,他把很多东西都给你弄好了,有默认的一套,你用就行了。
当然喽,springboot可不止这一个特点,它可以热部署、内嵌Servlet容器、自动装配、自带应用监控等等,对于学霸或者说有上进心的人来说,这些都要去了解,不过我这种渣渣,当然主要是咋个用喽。
三、咱们对比看看呗
咱们先看下以前的ssm项目,
看到这么多的 .xml 文件有没有很开心?开心到想砸了眼前的东西
好像说了很多废话,还是开始建项目吧
四、开始操作,建项目
听说eclipse有创建Springboot的插件sts。我没装,所以还是maven创建吧
1、建一个maven项目
File→New→Maven Project
直接Next
选择webapp
填写下图剪头指示的框框,然后Finish
创建好了,项目结构如下图
此时为空的maven项目,我们先把pom.xml引用了好依赖,再在相应的包在 src/main/java 中建好
2、pom.xml 依赖 以及 配置文件
①简单的依赖如下,我就不细说了
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lx</groupId>
<artifactId>springboot_demo</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_demo Maven Webapp</name>
<url>http://maven.apache.org</url>
<!-- 依赖父类springboot版本 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
</parent>
<!--springmvc的依赖-->
<dependencies>
<!--web相关-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--添加springdatajpa的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--数据库驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--springBoot整合Mybatis依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<!--测试依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
<!--aop支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
</dependencies>
<build>
<finalName>springboot_demo</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.yml</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.yml</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<!--打包时,重新打包指定spring boot的启动类 -->
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<!--Mybatis-generator插件,用于自动生成Mapper和POJO-->
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<!--插件设置-->
<configuration>
<!--允许移动生成的文件-->
<verbose>true</verbose>
<!--启用覆盖-->
<overwrite>true</overwrite>
<!--自动生成配置 如果名字是generatorConfig.xml可以省略配置
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>-->
</configuration>
</plugin>
</plugins>
</build>
</project>
②配置文件,application.yml
server:
port: 8080
spring:
datasource:
#驱动
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxxxxx?characterEncoding=utf8
username: root
password: *********
#连接池类型
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 最小数
min-idle: 5
# 最大数
max-active: 20
# 初始大小
initial-size: 5
# 配置获取连接等待超时时间
max-wait: 6000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存时间 单位为毫秒
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开 PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,wall用于防火墙
filters: stat,wall
mybatis:
# model的包
type-aliases-package: com.lx.springboot_demo.model
configuration:
# 开启驼峰uName自动映射到u_name
map-underscore-to-camel-case: true
# 该配置项配置了MyBatis配置文件保存路径
mapper-locations: classpath:mappers/*.xml
# 配置扫描对应实体所在包,将mapper的实现类注入容器我们在启动器类上加了@MapperScan注解这里就不需要了
3、创建相应的包结构
选择 src/main/java 反键 New → Package
填写Name 然后完成
把这个Java文件改为启动类
名字看你自己哦,我这是 Application
修改内容如下:
重复上面创建包的操作,把需要的包都建好,如下图:
4、使用 Mybatis Generator 自动生成实体类、mapper和mapper.xml文件
请参考文章 链接:
https://blog.csdn.net/qq_39688441/article/details/123851515
5、填写各个包的内容
由于生成的一套,除了基本的,其他没有,实际使用还得自己来根据实际情况编写
①mapper 增加一个方法
mapper 里就是数据库操作的方法
这里简单,只要定好 返回值类型、方法名 和 参数 就OK啦
②mapper.xml 的写法
如上图,1 为编写的返回值类型,即为,这个返回值要返回哪些字段
2 为引用的返回值的id
如上图,可以把常用的 一段sql 提出来,
在需要用到的地方 include 进去
如上图为具体的拼写sql
③service 层接口的编写
这层也很好写,想好要干的事,定好 服务名、返回参数 和 入参
④service 的 Impl 实现类
注意 class 类前面要 @Service 声明这是 业务层组件
这里就是写业务逻辑,一个业务要干什么,一个业务也会调多个数据库操作,我这里就简单调用一个查询
⑤Controller 层
到这里,基本上就写完了
五、运行
运行步骤如下
打开 Application.Java 文件,文件中点击反键,Run As… → Java Application
启动成功后:
http://localhost:8080/boot/getUserByNickname
http://localhost:8080/boot/getUserByNickname?name=lz
实际上刚建好时 一运行就报错,具体状况请看下面 六、2、3、4、5、
六、遇到的问题以及解决方案
1、刚建好项目,啥都没干呢就看到 index.jsp 红叉,如下:
错误状况:
刚建完maven项目,一看红X,赶紧进去看了下
打开index.jsp后,如下问题
解决方案:
反键 Build Path 里
Jave Build Path 里选择 如下图 红框
选择合适的tomcat
应用并关闭,很快就运行好了
报错已经解决
2、项目基本写完,没看到红叉之类的错误提示,但是一运行,报错
错误状况:
具体报错如下,我贴出来:
14:36:01.267 [main] DEBUG org.springframework.boot.context.logging.ClasspathLoggingApplicationListener - Application failed to start with classpath: [file:/D:/jdk1.8.0_101/jre/lib/resources.jar, file:/D:/jdk1.8.0_101/jre/lib/rt.jar, file:/D:/jdk1.8.0_101/jre/lib/jsse.jar, file:/D:/jdk1.8.0_101/jre/lib/jce.jar, file:/D:/jdk1.8.0_101/jre/lib/charsets.jar, file:/D:/jdk1.8.0_101/jre/lib/jfr.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/access-bridge-64.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/cldrdata.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/dnsns.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/jaccess.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/jfxrt.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/localedata.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/nashorn.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/sunec.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/sunjce_provider.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/sunmscapi.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/sunpkcs11.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/zipfs.jar, file:/D:/Work/springboot_demo/target/classes/, file:/D:/tomcat/apache-tomcat-9.0.60/lib/annotations-api.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/catalina-ant.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/catalina-ha.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/catalina-ssi.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/catalina-storeconfig.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/catalina-tribes.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/catalina.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/ecj-4.20.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/el-api.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/jasper-el.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/jasper.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/jaspic-api.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/jsp-api.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/servlet-api.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-api.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-coyote.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-dbcp.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-cs.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-de.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-es.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-fr.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-ja.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-ko.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-pt-BR.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-ru.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-zh-CN.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-jdbc.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-jni.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-util-scan.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-util.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-websocket.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/websocket-api.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-web/2.3.1.RELEASE/spring-boot-starter-web-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter/2.3.1.RELEASE/spring-boot-starter-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot/2.3.1.RELEASE/spring-boot-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/2.3.1.RELEASE/spring-boot-autoconfigure-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-logging/2.3.1.RELEASE/spring-boot-starter-logging-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar, file:/C:/Users/397004497/.m2/repository/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar, file:/C:/Users/397004497/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.13.3/log4j-to-slf4j-2.13.3.jar, file:/C:/Users/397004497/.m2/repository/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3.jar, file:/C:/Users/397004497/.m2/repository/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30.jar, file:/C:/Users/397004497/.m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar, file:/C:/Users/397004497/.m2/repository/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-json/2.3.1.RELEASE/spring-boot-starter-json-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.11.0/jackson-databind-2.11.0.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.11.0/jackson-annotations-2.11.0.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.11.0/jackson-core-2.11.0.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.0/jackson-datatype-jdk8-2.11.0.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.0/jackson-datatype-jsr310-2.11.0.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.0/jackson-module-parameter-names-2.11.0.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/2.3.1.RELEASE/spring-boot-starter-tomcat-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.36/tomcat-embed-core-9.0.36.jar, file:/C:/Users/397004497/.m2/repository/org/glassfish/jakarta.el/3.0.3/jakarta.el-3.0.3.jar, file:/C:/Users/397004497/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.36/tomcat-embed-websocket-9.0.36.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-web/5.2.7.RELEASE/spring-web-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-beans/5.2.7.RELEASE/spring-beans-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-webmvc/5.2.7.RELEASE/spring-webmvc-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-context/5.2.7.RELEASE/spring-context-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-expression/5.2.7.RELEASE/spring-expression-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-data-jpa/2.3.1.RELEASE/spring-boot-starter-data-jpa-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-jdbc/2.3.1.RELEASE/spring-boot-starter-jdbc-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/com/zaxxer/HikariCP/3.4.5/HikariCP-3.4.5.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-jdbc/5.2.7.RELEASE/spring-jdbc-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/jakarta/transaction/jakarta.transaction-api/1.3.3/jakarta.transaction-api-1.3.3.jar, file:/C:/Users/397004497/.m2/repository/jakarta/persistence/jakarta.persistence-api/2.2.3/jakarta.persistence-api-2.2.3.jar, file:/C:/Users/397004497/.m2/repository/org/hibernate/hibernate-core/5.4.17.Final/hibernate-core-5.4.17.Final.jar, file:/C:/Users/397004497/.m2/repository/org/jboss/logging/jboss-logging/3.4.1.Final/jboss-logging-3.4.1.Final.jar, file:/C:/Users/397004497/.m2/repository/org/javassist/javassist/3.24.0-GA/javassist-3.24.0-GA.jar, file:/C:/Users/397004497/.m2/repository/net/bytebuddy/byte-buddy/1.10.11/byte-buddy-1.10.11.jar, file:/C:/Users/397004497/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar, file:/C:/Users/397004497/.m2/repository/org/jboss/jandex/2.1.3.Final/jandex-2.1.3.Final.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/classmate/1.5.1/classmate-1.5.1.jar, file:/C:/Users/397004497/.m2/repository/org/dom4j/dom4j/2.1.3/dom4j-2.1.3.jar, file:/C:/Users/397004497/.m2/repository/org/hibernate/common/hibernate-commons-annotations/5.1.0.Final/hibernate-commons-annotations-5.1.0.Final.jar, file:/C:/Users/397004497/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.3/jaxb-runtime-2.3.3.jar, file:/C:/Users/397004497/.m2/repository/org/glassfish/jaxb/txw2/2.3.3/txw2-2.3.3.jar, file:/C:/Users/397004497/.m2/repository/com/sun/istack/istack-commons-runtime/3.0.11/istack-commons-runtime-3.0.11.jar, file:/C:/Users/397004497/.m2/repository/com/sun/activation/jakarta.activation/1.2.2/jakarta.activation-1.2.2.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/data/spring-data-jpa/2.3.1.RELEASE/spring-data-jpa-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/data/spring-data-commons/2.3.1.RELEASE/spring-data-commons-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-orm/5.2.7.RELEASE/spring-orm-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-tx/5.2.7.RELEASE/spring-tx-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-aspects/5.2.7.RELEASE/spring-aspects-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/mysql/mysql-connector-java/8.0.20/mysql-connector-java-8.0.20.jar, file:/C:/Users/397004497/.m2/repository/org/mybatis/spring/boot/mybatis-spring-boot-starter/2.1.3/mybatis-spring-boot-starter-2.1.3.jar, file:/C:/Users/397004497/.m2/repository/org/mybatis/spring/boot/mybatis-spring-boot-autoconfigure/2.1.3/mybatis-spring-boot-autoconfigure-2.1.3.jar, file:/C:/Users/397004497/.m2/repository/org/mybatis/mybatis/3.5.5/mybatis-3.5.5.jar, file:/C:/Users/397004497/.m2/repository/org/mybatis/mybatis-spring/2.0.5/mybatis-spring-2.0.5.jar, file:/C:/Users/397004497/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3.jar, file:/C:/Users/397004497/.m2/repository/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-core/5.2.7.RELEASE/spring-core-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-jcl/5.2.7.RELEASE/spring-jcl-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/com/alibaba/druid-spring-boot-starter/1.2.6/druid-spring-boot-starter-1.2.6.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-aop/2.3.1.RELEASE/spring-boot-starter-aop-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-aop/5.2.7.RELEASE/spring-aop-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/aspectj/aspectjweaver/1.9.5/aspectjweaver-1.9.5.jar, file:/C:/Users/397004497/.m2/repository/org/mybatis/generator/mybatis-generator-core/1.3.5/mybatis-generator-core-1.3.5.jar]
14:36:01.355 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.IllegalStateException: Failed to load property source from 'file:/D:/Work/springboot_demo/target/classes/application.yml' (classpath:/application.yml)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:554)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadForFileExtension(ConfigFileApplicationListener.java:499)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:469)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$null$7(ConfigFileApplicationListener.java:448)
at java.lang.Iterable.forEach(Iterable.java:75)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$load$8(ConfigFileApplicationListener.java:448)
at java.lang.Iterable.forEach(Iterable.java:75)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:445)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$load$0(ConfigFileApplicationListener.java:348)
at org.springframework.boot.context.config.FilteredPropertySource.apply(FilteredPropertySource.java:54)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:336)
at org.springframework.boot.context.config.ConfigFileApplicationListener.addPropertySources(ConfigFileApplicationListener.java:226)
at org.springframework.boot.context.config.ConfigFileApplicationListener.postProcessEnvironment(ConfigFileApplicationListener.java:210)
at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEnvironmentPreparedEvent(ConfigFileApplicationListener.java:200)
at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:188)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:80)
at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:53)
at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:345)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at com.lx.springboot_demo.Application.main(Application.java:19)
Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token
found character '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for indentation)
in 'reader', line 6, column 3:
#驱动
^
at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:419)
at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227)
at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingValue.produce(ParserImpl.java:586)
at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148)
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:136)
at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:257)
at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:248)
at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:236)
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:162)
at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:257)
at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:248)
at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:236)
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:162)
at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:95)
at org.yaml.snakeyaml.constructor.BaseConstructor.getData(BaseConstructor.java:134)
at org.yaml.snakeyaml.Yaml$1.next(Yaml.java:494)
at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:200)
at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:164)
at org.springframework.boot.env.OriginTrackedYamlLoader.load(OriginTrackedYamlLoader.java:76)
at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:50)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadDocuments(ConfigFileApplicationListener.java:608)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:524)
... 25 common frames omitted
小小分析:
首先找到最开始报错的地方,
java.lang.IllegalStateException: Failed to load property source from 'file:/D:/Work/springboot_demo/target/classes/application.yml' (classpath:/application.yml)
Failed to load property source from ‘file:/xxxxxxxxxxxxxx.xxxxx.yml’ (classpath:/application.yml)
这个是说你的yml有问题,可能是语法有错
咋们往下翻:
这就是提示了
打开 yml 文件
看到了吗,和上面提示的一样,第6行,第3个位置开始的 “#驱动”
我这里,一看,这个中文注释是这个文件的第一个中文注释
所以我猜是注释有问题
解决方案:
把 yml 文件里所有注释全部删掉
3、再次运行,又报错了,
错误状况:
2022-04-02 16:03:36.377 ERROR 24484 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : 在路径为的上下文中,Servlet[dispatcherServlet]的Servlet.service()引发了具有根本原因的异常Request processing failed; nested exception is java.lang.NullPointerException
java.lang.NullPointerException: null
at com.lx.springboot_demo.controller.UserMainController.getUserByNickname(UserMainController.java:22) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_101]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_101]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_101]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_101]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
查找问题:
通过打印语句,发现, Controller 层已经进入,没进 Service 层,
检查注解,发现 Controller 层用 Service 时,忘了注入了
加上自动注入
进入到service层打印,但是又报错
2022-04-02 16:08:46.374 ERROR 23972 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : 在路径为的上下文中,Servlet[dispatcherServlet]的Servlet.service()引发了具有根本原因的异常Request processing failed; nested exception is java.lang.IllegalArgumentException: Result Maps collection does not contain value for com.lx.springboot_demo.dao.UserMainMapper.List
java.lang.IllegalArgumentException: Result Maps collection does not contain value for com.lx.springboot_demo.dao.UserMainMapper.List
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:1009) ~[mybatis-3.5.5.jar:3.5.5]
at org.apache.ibatis.session.Configuration.getResultMap(Configuration.java:718) ~[mybatis-3.5.5.jar:3.5.5]
at org.apache.ibatis.builder.MapperBuilderAssistant.getStatementResultMaps(MapperBuilderAssistant.java:394) ~[mybatis-3.5.5.jar:3.5.5]
at org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:285) ~[mybatis-3.5.5.jar:3.5.5]
定位到问题发生位置后,百度解决:
百度后说是
如上图,确实用错了
修改如下图 ,也是不对的。
我要查的是多条实体。最后改为下图这样就好了。
前面是我想错了,这里 resultMap 是返回结果的每一个实体的的类型,而不是返回结果的类型
4、Application run failed 启动失败
错误状况:
09:50:14.499 [main] DEBUG org.springframework.boot.context.logging.ClasspathLoggingApplicationListener - Application failed to start with classpath: [file:/D:/jdk1.8.0_101/jre/lib/resources.jar, file:/D:/jdk1.8.0_101/jre/lib/rt.jar, file:/D:/jdk1.8.0_101/jre/lib/jsse.jar, file:/D:/jdk1.8.0_101/jre/lib/jce.jar, file:/D:/jdk1.8.0_101/jre/lib/charsets.jar, file:/D:/jdk1.8.0_101/jre/lib/jfr.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/access-bridge-64.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/cldrdata.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/dnsns.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/jaccess.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/jfxrt.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/localedata.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/nashorn.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/sunec.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/sunjce_provider.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/sunmscapi.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/sunpkcs11.jar, file:/D:/jdk1.8.0_101/jre/lib/ext/zipfs.jar, file:/D:/Work/springboot_demo/target/classes/, file:/D:/tomcat/apache-tomcat-9.0.60/lib/annotations-api.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/catalina-ant.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/catalina-ha.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/catalina-ssi.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/catalina-storeconfig.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/catalina-tribes.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/catalina.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/ecj-4.20.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/el-api.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/jasper-el.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/jasper.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/jaspic-api.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/jsp-api.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/servlet-api.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-api.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-coyote.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-dbcp.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-cs.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-de.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-es.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-fr.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-ja.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-ko.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-pt-BR.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-ru.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-i18n-zh-CN.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-jdbc.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-jni.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-util-scan.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-util.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/tomcat-websocket.jar, file:/D:/tomcat/apache-tomcat-9.0.60/lib/websocket-api.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-web/2.3.1.RELEASE/spring-boot-starter-web-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter/2.3.1.RELEASE/spring-boot-starter-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot/2.3.1.RELEASE/spring-boot-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/2.3.1.RELEASE/spring-boot-autoconfigure-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-logging/2.3.1.RELEASE/spring-boot-starter-logging-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar, file:/C:/Users/397004497/.m2/repository/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar, file:/C:/Users/397004497/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.13.3/log4j-to-slf4j-2.13.3.jar, file:/C:/Users/397004497/.m2/repository/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3.jar, file:/C:/Users/397004497/.m2/repository/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30.jar, file:/C:/Users/397004497/.m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar, file:/C:/Users/397004497/.m2/repository/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-json/2.3.1.RELEASE/spring-boot-starter-json-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.11.0/jackson-databind-2.11.0.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.11.0/jackson-annotations-2.11.0.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.11.0/jackson-core-2.11.0.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.0/jackson-datatype-jdk8-2.11.0.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.0/jackson-datatype-jsr310-2.11.0.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.0/jackson-module-parameter-names-2.11.0.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/2.3.1.RELEASE/spring-boot-starter-tomcat-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.36/tomcat-embed-core-9.0.36.jar, file:/C:/Users/397004497/.m2/repository/org/glassfish/jakarta.el/3.0.3/jakarta.el-3.0.3.jar, file:/C:/Users/397004497/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.36/tomcat-embed-websocket-9.0.36.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-web/5.2.7.RELEASE/spring-web-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-beans/5.2.7.RELEASE/spring-beans-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-webmvc/5.2.7.RELEASE/spring-webmvc-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-context/5.2.7.RELEASE/spring-context-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-expression/5.2.7.RELEASE/spring-expression-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-data-jpa/2.3.1.RELEASE/spring-boot-starter-data-jpa-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-jdbc/2.3.1.RELEASE/spring-boot-starter-jdbc-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/com/zaxxer/HikariCP/3.4.5/HikariCP-3.4.5.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-jdbc/5.2.7.RELEASE/spring-jdbc-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/jakarta/transaction/jakarta.transaction-api/1.3.3/jakarta.transaction-api-1.3.3.jar, file:/C:/Users/397004497/.m2/repository/jakarta/persistence/jakarta.persistence-api/2.2.3/jakarta.persistence-api-2.2.3.jar, file:/C:/Users/397004497/.m2/repository/org/hibernate/hibernate-core/5.4.17.Final/hibernate-core-5.4.17.Final.jar, file:/C:/Users/397004497/.m2/repository/org/jboss/logging/jboss-logging/3.4.1.Final/jboss-logging-3.4.1.Final.jar, file:/C:/Users/397004497/.m2/repository/org/javassist/javassist/3.24.0-GA/javassist-3.24.0-GA.jar, file:/C:/Users/397004497/.m2/repository/net/bytebuddy/byte-buddy/1.10.11/byte-buddy-1.10.11.jar, file:/C:/Users/397004497/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar, file:/C:/Users/397004497/.m2/repository/org/jboss/jandex/2.1.3.Final/jandex-2.1.3.Final.jar, file:/C:/Users/397004497/.m2/repository/com/fasterxml/classmate/1.5.1/classmate-1.5.1.jar, file:/C:/Users/397004497/.m2/repository/org/dom4j/dom4j/2.1.3/dom4j-2.1.3.jar, file:/C:/Users/397004497/.m2/repository/org/hibernate/common/hibernate-commons-annotations/5.1.0.Final/hibernate-commons-annotations-5.1.0.Final.jar, file:/C:/Users/397004497/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.3/jaxb-runtime-2.3.3.jar, file:/C:/Users/397004497/.m2/repository/org/glassfish/jaxb/txw2/2.3.3/txw2-2.3.3.jar, file:/C:/Users/397004497/.m2/repository/com/sun/istack/istack-commons-runtime/3.0.11/istack-commons-runtime-3.0.11.jar, file:/C:/Users/397004497/.m2/repository/com/sun/activation/jakarta.activation/1.2.2/jakarta.activation-1.2.2.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/data/spring-data-jpa/2.3.1.RELEASE/spring-data-jpa-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/data/spring-data-commons/2.3.1.RELEASE/spring-data-commons-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-orm/5.2.7.RELEASE/spring-orm-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-tx/5.2.7.RELEASE/spring-tx-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-aspects/5.2.7.RELEASE/spring-aspects-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/mysql/mysql-connector-java/8.0.20/mysql-connector-java-8.0.20.jar, file:/C:/Users/397004497/.m2/repository/org/mybatis/spring/boot/mybatis-spring-boot-starter/2.1.3/mybatis-spring-boot-starter-2.1.3.jar, file:/C:/Users/397004497/.m2/repository/org/mybatis/spring/boot/mybatis-spring-boot-autoconfigure/2.1.3/mybatis-spring-boot-autoconfigure-2.1.3.jar, file:/C:/Users/397004497/.m2/repository/org/mybatis/mybatis/3.5.5/mybatis-3.5.5.jar, file:/C:/Users/397004497/.m2/repository/org/mybatis/mybatis-spring/2.0.5/mybatis-spring-2.0.5.jar, file:/C:/Users/397004497/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3.jar, file:/C:/Users/397004497/.m2/repository/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-core/5.2.7.RELEASE/spring-core-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-jcl/5.2.7.RELEASE/spring-jcl-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/com/alibaba/druid-spring-boot-starter/1.2.6/druid-spring-boot-starter-1.2.6.jar, file:/C:/Users/397004497/.m2/repository/com/alibaba/druid/1.2.6/druid-1.2.6.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/boot/spring-boot-starter-aop/2.3.1.RELEASE/spring-boot-starter-aop-2.3.1.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/springframework/spring-aop/5.2.7.RELEASE/spring-aop-5.2.7.RELEASE.jar, file:/C:/Users/397004497/.m2/repository/org/aspectj/aspectjweaver/1.9.5/aspectjweaver-1.9.5.jar, file:/C:/Users/397004497/.m2/repository/org/mybatis/generator/mybatis-generator-core/1.3.5/mybatis-generator-core-1.3.5.jar]
09:50:14.848 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.IllegalStateException: Failed to load property source from 'file:/D:/Work/springboot_demo/target/classes/application.yml' (classpath:/application.yml)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:554)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadForFileExtension(ConfigFileApplicationListener.java:499)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:469)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$null$7(ConfigFileApplicationListener.java:448)
at java.lang.Iterable.forEach(Iterable.java:75)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$load$8(ConfigFileApplicationListener.java:448)
at java.lang.Iterable.forEach(Iterable.java:75)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:445)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$load$0(ConfigFileApplicationListener.java:348)
at org.springframework.boot.context.config.FilteredPropertySource.apply(FilteredPropertySource.java:54)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:336)
at org.springframework.boot.context.config.ConfigFileApplicationListener.addPropertySources(ConfigFileApplicationListener.java:226)
at org.springframework.boot.context.config.ConfigFileApplicationListener.postProcessEnvironment(ConfigFileApplicationListener.java:210)
at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEnvironmentPreparedEvent(ConfigFileApplicationListener.java:200)
at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:188)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:80)
at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:53)
at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:345)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at com.lx.springboot_demo.Application.main(Application.java:19)
Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token
found character '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for indentation)
in 'reader', line 39, column 1:
mapper-locations: class:mappers ...
^
at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:419)
at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227)
at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingValue.produce(ParserImpl.java:586)
at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148)
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:136)
at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:257)
at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:248)
at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:236)
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:162)
at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:95)
at org.yaml.snakeyaml.constructor.BaseConstructor.getData(BaseConstructor.java:134)
at org.yaml.snakeyaml.Yaml$1.next(Yaml.java:494)
at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:200)
at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:164)
at org.springframework.boot.env.OriginTrackedYamlLoader.load(OriginTrackedYamlLoader.java:76)
at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:50)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadDocuments(ConfigFileApplicationListener.java:608)
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:524)
... 25 common frames omitted
java.lang.IllegalStateException: Failed to load property source from 'file:/D:/Work/springboot_demo/target/classes/application.yml' (classpath:/application.yml)
如上图,它总是提示我,这块有问题,可是我检查,yml配置文件,看起来没写错
小小分析:
注意看这里
这个算是小箭头吧,它标注的位置,在我代码前面的空白
我没明白,不过我各种实验过,反正只要把 mybatis: 这些东西全删除,居然能正常启动,并且正常调用返回。那我确定就是mybatis这块写错了。
解决方案:
最终,实验到我把前面空白去掉,他就不报这一行错误。
然后和上面复制粘贴过来的进行对比,发现,这几行报错的前面我 按得是 “
Tab
” 按键,而正确的代码里,前面的空白 用的是多个
空格
键
修改后,如下:
mybatis:
mapper-locations: class:mappers/*.xml
type-aliases-package: com.lx.springboot_demo.model
configuration:
map-underscore-to-camel-case: true
把前面缩进的位置都用 空格 键来缩进
启动,问题解决。
5、启动已经没问题,但是控制台有一个警告
警告详情:
启动时,控制台如下:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.1.RELEASE)
2022-04-06 10:04:00.230 INFO 28028 --- [ main] com.lx.springboot_demo.Application : Starting Application on LAPTOP-710QH23H with PID 28028 (D:\Work\springboot_demo\target\classes started by 397004497 in D:\Work\springboot_demo)
2022-04-06 10:04:00.233 INFO 28028 --- [ main] com.lx.springboot_demo.Application : No active profile set, falling back to default profiles: default
2022-04-06 10:04:01.983 INFO 28028 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFERRED mode.
2022-04-06 10:04:02.015 INFO 28028 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 20ms. Found 0 JPA repository interfaces.
2022-04-06 10:04:04.386 INFO 28028 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2022-04-06 10:04:04.453 INFO 28028 --- [ main] o.apache.catalina.core.StandardService : 正在启动服务[Tomcat]
2022-04-06 10:04:04.453 INFO 28028 --- [ main] org.apache.catalina.core.StandardEngine : 正在启动 Servlet 引擎:[Apache Tomcat/9.0.60]
2022-04-06 10:04:04.454 WARN 28028 --- [ main] o.a.catalina.core.AprLifecycleListener : This listener must only be nested within Server elements, but is in [TomcatEmbeddedContext].
2022-04-06 10:04:04.455 INFO 28028 --- [ main] o.a.catalina.core.AprLifecycleListener : 使用APR版本[1.7.0]加载了基于APR的Apache Tomcat本机库[1.2.31]。
2022-04-06 10:04:04.455 INFO 28028 --- [ main] o.a.catalina.core.AprLifecycleListener : APR功能:IPv6[true]、sendfile[true]、accept filters[false]、random[true]、UDS [true]。
2022-04-06 10:04:04.455 INFO 28028 --- [ main] o.a.catalina.core.AprLifecycleListener : APR/OpenSSL配置:useAprConnector[false],useOpenSSL[true]
2022-04-06 10:04:04.635 INFO 28028 --- [ main] o.a.catalina.core.AprLifecycleListener : OpenSSL成功初始化 [OpenSSL 1.1.1l 24 Aug 2021]
2022-04-06 10:04:05.643 INFO 28028 --- [ main] org.apache.jasper.servlet.TldScanner : 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
2022-04-06 10:04:05.647 INFO 28028 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-04-06 10:04:05.648 INFO 28028 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5329 ms
2022-04-06 10:04:05.926 INFO 28028 --- [ main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
2022-04-06 10:04:10.829 INFO 28028 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
2022-04-06 10:04:11.091 INFO 28028 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2022-04-06 10:04:11.285 INFO 28028 --- [ task-1] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2022-04-06 10:04:11.488 INFO 28028 --- [ task-1] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.17.Final
2022-04-06 10:04:12.192 WARN 28028 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2022-04-06 10:04:12.277 INFO 28028 --- [ task-1] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2022-04-06 10:04:12.948 INFO 28028 --- [ task-1] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL57Dialect
2022-04-06 10:04:13.545 INFO 28028 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2022-04-06 10:04:13.546 INFO 28028 --- [ main] DeferredRepositoryInitializationListener : Triggering deferred initialization of Spring Data repositories…
2022-04-06 10:04:13.547 INFO 28028 --- [ main] DeferredRepositoryInitializationListener : Spring Data repositories initialized!
2022-04-06 10:04:13.567 INFO 28028 --- [ main] com.lx.springboot_demo.Application : Started Application in 14.39 seconds (JVM running for 14.968)
2022-04-06 10:04:13.824 INFO 28028 --- [ task-1] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2022-04-06 10:04:13.839 INFO 28028 --- [ task-1] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
出现了
一行红字,百度翻译了下
正在加载class`com。mysql。jdbc。司机。这是不赞成的。新的驱动程序类是’com。mysql。希杰。jdbc。司机。驱动程序通过SPI自动注册,通常不需要手动加载驱动程序类。
意思是 :不赞成加载 “com.mysql.jdbc.Driver” 驱动。新的驱动程序类 “com.mysql.cj.jdbc.Driver”。自动注册,不需要手动加载
问题所在:
配置文件加载驱动应该改了
解决问题:
修改驱动类名