相关问题可能也提及在【IDEA 介绍 + 配置 + 插件汇总】文中:
https://blog.csdn.net/weixin_42915286/article/details/83069223
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.1.RELEASE)
——————————————————————————
Bean
...
提问:Spring Bean的作用域之间有什么区别?
Spring中,可以在
元素的scope
属性中设置bean的作用域,以决定这个bean是单实例还是多实例;
默认情况下,Spring只为每个在IoC容器里生命的bean创建唯一一个实例,整个IoC容器范围内都能共享该实例:所有后续getBean()
调用和bean饮用都将返回这个唯一的bean实例。该作用域被称为singleton
,它是所有bean的默认作用域;
getBean()
时都会返回一个新的实例;https://www.bilibili.com/video/av37602130/?p=8
提问:简单介绍Spring支持的常用数据库事务传播属性和事物隔离级别?
事物的传播行为:
事物的传播行为,一个方法运行在了一个开启了的事物的方法中时,当前方法是使用原来的事物还是开启一个新的事物;
事物的属性:
propagation
:用来设置事物的传播行为;Propagation.REQUIRED
:默认值,使用原来的事物;Propagation.REQUIRED_NEW
:将原来的事物刮起,开启一个新的事物;isolation
:用来设置事物的隔离程度;Isolation.REPEATABLE_READ
:可重复读,MySQL默认的隔离级别;Isolation.REPEATABLE_COMITTED
:读已提交,Oracle默认的隔离级别,开发时通常使用的隔离级别;提问:Spring中的Bean是线程安全的吗?
Spring本身未提供Bean线程安全策略;
线程安全要从原型和单例分别说明:
原型Bean:每创建一个新对象,即线程间不存在Bean共享,自然不会有线程安全问题;
单例Bean:若单例Bean是个无状态Bean,就是线程中的操作不会对Bean成员执行查询以外的操作,那么这个单例Bean是线程安全的;
对有状态的Vean,Spring提供的Bean,一般提供了ThreadLocal去解决线程安全问题;
——————————————————————————
——————————————————————————
——————————————————————————
——————————————————————————
——————————————————————————
——————————————————————————
1.Terminal中结束Spring程序
control+C
——————————————————————————
2.application.properties与application.yml之间的区别?
在线转换:http://www.toyaml.com/index.html
实质上两者是差不多的,区别在于结构。
官方给的很多demo,都是用yml文件配置的;yml文件的好处:天然的树状结构一目了然,
注意点:
区别如下:
application.properties
application.yml
——————————————————————————
3.热部署HOT SWAPPING:用spring-boot-devtools提供的开发者工具实现
热部署指:每次修改项目不用重新启动项目,Spring自动更新。
(另外还有修改服务器配置、使用springloaded jar包、使用收费插件Jrebel实现热部署,详见https://www.cnblogs.com/jcook/p/6910238.html)
org.springframework.boot
spring-boot-devtools
runtime
true
spring.devtools.restart.enabled=true
spring.devtools.restart.additional-paths=src/main/java
spring.devtools.restart.exclude=WEB-INF/**
参考博客:
2.https://blog.csdn.net/qq_29648651/article/details/78503853 https://blog.csdn.net/testcs_dn/article/details/78959700
3.https://www.cnblogs.com/jcook/p/6910238.html
——————————————————————————
serialVersionUID
?Java 类进行序列化也两个主要目的,分别为:
1.把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
2.在网络上传送对象的字节序列。
而某个Java类 implements Serializable后,需要添加参数serialVersionUID的语句;
serialVersionUID
是一个非常重要的字段,因 Java 的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。
在进行反序列化时,JVM 会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。
一般来说,定义serialVersionUID的方式有两种,分别为:
1.采用默认的1L
,具体为private static final long serialVersionUID = 1L;
2.根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,例如private static final long serialVersionUID = XXXL;
这里讲的是如何让IDE生成64位的Long哈希字段;
步骤1:安装插件GenerateSerialVersionUID
,成功后重启IDE
步骤二:Inspections - Serializable class without 'serialVersionUID'
,设置为Warining
步骤三:实体类名中一旦implements了Serializable,类名就会报错,提示自动生成serialVersionUID
步骤四:随机生成serialVersionUID
;
比如:private static final long serialVersionUID = 3450342483181838030L;
——————————————————————————
解压缩:
$jar xvf 文件名.jar
创建指定文件名JAR包(若存在同名则会覆盖):
$jar cf 文件名.jar 文件名
创建指定文件名JAR包,且显示打包过程:
$jar cvf 文件名.jar 文件名
https://blog.csdn.net/zilaike/article/details/82147178
需要配合参考文章:【框架】Spring MVC
https://blog.csdn.net/weixin_42915286/article/details/84325143
1.如遇到报错 inspects a maven model for resolution problems
,参考如下:
https://blog.csdn.net/lishaoran369/article/details/53994601/
——————————————————————————————
2.No artifacts marked for deployment
TOMCAT部署没有配置Artifact;
【框架】Spring MVC 中搜索 4.Run/Debug Configuration
——————————————————————————————
3.Library spring mvc-4.3.18.release required for mudule is missing from the artifact
JAR库遗漏了Available Elements;【框架】Spring MVC搜索 5.Project Structure - Artifacts
——————————————————————————————
4.CATALINA报错:The matching wildcard is strict, but no declaration can be found for element 'mvc:annotation-driven'.
匹配的通配符是正确的,但是不能找到参数;
如次条报错指出的问题在于
;
此条完整写法是
,但此时我还不需要添加参数入内,我的写法:
会报错;可改成
,或注释掉。
——————————————————————————————
5.Could not open ServletContext resource [/WEB-INF/Dispatcher-servlet.xml]
参考【框架】Spring MVC「特别注意之处」第一条;或在参考博文中搜索这条报错信息。
——————————————————————————————
6.It is possible to bind and connect to localhost:xxxx at the same time - application server will probably compete with some other software on the port
端口被占用(TOMCAT - Server中设置的HTTP/JMX port也有可能被占用端口),杀掉进程即可。
——————————————————————————————
7.org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/springmvcdemo/springmvc/testRequestParam] in DispatcherServlet with name 'dispatcher'
找不到testRequestParam的静态资源:
在index.xml中,本来应该这么写测试RequestParam
;
写成了测试RequestParam
——————————————————————————————
8. jsp.xml
无法识别EL表达式/EL语句
比如在jsp.xml中定义:
执行失败:${errorMessage}
${errorMessage}
指向Controller
中定义的方法;
本来依据Controller
的情况,浏览器应该显示:执行失败:未写用户名
但浏览器却直接显示:执行失败:${errorMessage}
;
说明EL语句未被jsp.xml识别。
————————
因为web.xml中Servlet2.3默认不识别EL语句:
————————
解决办法:二选一(建议第二种)
1.在jsp开头部分加入:isELIgnored="false"
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
亲测无效
2.调整web.xml:
BEFORE
AFTER
——————————————————————————————
9.Type class com.toceansoft.sys.dao.SysRoleMenuDao
is not known to the MapperRegistry.
Springboot:有.xml,有.entity.java,没有文件对应的.dao,无法映射;
新建对应的.dao即可;
——————————————————————————————
10.Annotation-specified bean name ‘xxxImpl’ for bean class [com.xxx.xxx.impl.xxxImpl] conflicts with existing, non-compatible bean definition of same name and class [com.xxx.xxx.impl.xxxImpl]
项目新增一个业务逻辑的Impl类之后,项目就报错了;
可能是某个Impl文件中的@Service
重名了。
——————————————————————————————
11.Annotation-specified bean name ‘sysConfigController’ for bean class [com.sys.controller.SysConfigController] conflicts with existing, non-compatible bean definition of same name and class [com.oss.controller.SysConfigController]
内置的bean class[位于sys文件夹],与现存的、不可兼容的同名bean class[位于oss文件夹]冲突;
既然内置文件有规定文件位置,把文件从oss文件夹移到sys文件夹即可。
——————————————————————————————
——————————————————————————————
——————————————————————————————
————————————————————————————————
org.springframework.boot.context.properties.bind.BindException
Failed to bind properties under 'logging.level' to java.util.Map
logging.level
后没有指定包名:logging:
level:trace
应该在logging.level
后加上包名,或直接写个root
亦可;
logging:
level:
com.xxx: trace
————————————————————————————————
1.配置xml报错:url is not registered
————————————————————————————————
2.Mac 上 Class JavaLaunchHelper is implemented in both 报错
You can find all the details here:
IDEA-170117 “objc: Class JavaLaunchHelper is implemented in both …” warning in Run consoles
It’s the old bug in Java on Mac that got triggered by the Java Agent being used by the IDE when starting the app. This message is harmless and is safe to ignore. Oracle developer’s comment:
The message is benign, there is no negative impact from this problem since both copies of that class are identical (compiled from the exact same source). It is purely a cosmetic issue.
The problem is fixed in Java 9 and in Java 8 update 152.
If it annoys you or affects your apps in any way, the workaround for IntelliJ IDEA is to disable idea_rt launcher agent by adding idea.no.launcher=true into idea.properties (Help | Edit Custom Properties…).
这位外国码友清楚地解释了这个Error的原因,大概意思是说这是Mac上面Java的一个老Bug了,会在那些使用了Java Agent的IDE上运行应用时触发,但这个Error对程序是无影响的,可以无视。在Java 9和Java 1.8.152版本里已经修复了。
解决方案:
点击IJ最上面菜单的Help-Edit Custom Properties,没有这个properties文件的话,IJ会提示创建,然后在里面加上
idea.no.launcher=true
————————————————————————————————
3.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.
改成如下即可
jdbc.driverClass = com.mysql.cj.jdbc.Driver
jdbc.url = jdbc:mysql://127.0.0.1:3306/db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
jdbc.username = root
jdbc.password = root123
在我的项目里找不到jdbc.properties,因为实际内容写在application.properties中。
大坑!!!
大坑!!!
大坑!!!
大坑!!!
大坑!!!
大坑!!!
大坑!!!
若需要配置mybatis-generator!!!
database.properties中的db.driverClassName这一栏!!!
MYSQL8版本的驱动名称是:com.mysql.cj.jdbc.Driver
MYSQL8以下的驱动名称是:com.mysql.jdbc.Driver
我的Mysql版本是8,所以填写了com.mysql.jdbc.Driver后一直报错!!!
应该写!!!com.mysql.cj.jdbc.Driver
————————————————————————————————
4.### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!
Connections could not be acquired from the underlying database!
数据库连系不上
可能解决该问题的办法有:
1,驱动配置有误:driver=com.mysql.jdbc.Driver
2,数据库连接地址有误:url=jdbc:mysql://localhost:3306/test3useUnicode=true&characterEncoding=utf8
3,密码或帐号有误:username=rootpassword=root
(上面三条一般都写在配置文件中,如果是因为修改了配置文件后导致该错误,建议重写一遍配置文件,因为有时候开发工具就是很蛋疼,表面没有错误,程序运行却提示报错)
4,数据库未启动或无权访问
5,项目未引入对应的驱动jar包mysql-connector-java-5.1.6-bin.jar
6,mysql root没有远程访问的权限,需要增加权限,增加权限的步骤如下:
进入mysql数据库:
grant all privileges on . to ‘root’@’%’ identified by ‘root’ with grant option;
flush privileges;
7.在普通java项目中使用 mybatis+C3p0+spring时也遇见上述问题。
问题原因是:在xml配置文件中显示声明了自动装载 几经折腾,把自动装载设置去掉,就没有问题了,应该使用默认的 byType。
我自己遇到的问题是:jdbc.properties中:
jdbc password 输入错误;
改正后,项目运行成功
————————————————————————————————
5.assertEquals(expected:2);中的expected报错
报错图如下:
检查引入包:import static org.junit.Assert.*;
无误,但他没有被激活;
问题在于expected不该手动输入,直接输入“2”,系统自动生成灰色框的expected;
这个问题困扰了我几天,查了再多资料也没用,应该早点意识到是自身的问题。
————————————————————————————————
6.
org.springframework.jdbc.BadSqlGrammarException:
### Error updating database. Cause: java.sql.SQLSyntaxErrorException: Unknown column 'last_eidt_time' in 'field list'
### The error may involve com.imooc.demo.dao.AreaDao.updateArea-Inline
### The error occurred while setting parameters
### SQL: update tb_area SET area_name=?, last_eidt_time=? where area_id=?
### Cause: java.sql.SQLSyntaxErrorException: Unknown column 'last_eidt_time' in 'field list'
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown column 'last_eidt_time' in 'field list'
mybatis 的xml文件中出现了与数据库表中的字段不匹配。
此xml可能指mapper中的xml文件。
如图:
7.Spring项目除了可以在IDE中运行,也可以在系统Terminal中运行:
如在Terminal中进入项目目录后操作 mvn spring-boot:run
。
若报错No plugin found for prefix ‘spring-boot’ in the current project and in t
he plugin groups[org.apache.maven.plugins, org.codehaus.mojo] available from th
e repositories
原因:
(1).pom.xml里少了parent,代码如下:(但极少数情况下才会发生)
org.springframework.boot
spring-boot-starter-parent
1.2.7.RELEASE
(2).少了如下代码:
spring-releases
https://repo.spring.io/libs-release
spring-releases
https://repo.spring.io/libs-release
(4).在命令行运行 mvn spring-boot:run 时,一定要确保你是在包含了该pom.xml的路径下,不然就会出现 No plugin found for prefix ‘spring-boot’ in the current project and in the plugin groups 这种错误。
(5).确保操作的是:进入了POM路径下,且执行的是mvn spring-boot:run
————————————————————————————————
8.RUN项目时失败提示:[idea]Error:java: invalid source release: 1.8
Project Structure - Modules - Dependencies 中SDK与依赖版本号不匹配
特别注意!
如果junit
的包无法引入,试过了重下依赖和reimport也没用;
可能是类没有写在TEST包中,一定要写在TEST包中,junit的注解才能生效!!!
junit
junit
4.8.2
test
这里的
写了作用范围是TEST
!!!
————————————————————————————————
9.
Description:
Field tvSeriesService in cn.devmgr.tutorial.controller.TvSeriesController required a bean of type 'cn.devmgr.tutorial.service.TvSeriesService' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
意思是tvSeriesService
类没有写@Service
标签
另附加相似问题处理办法:https://blog.csdn.net/zhouyingge1104/article/details/78267882/
——————————————————————————————
10.Could not autowire. No beans of ‘xxxx’ type found
此部分在【框架】Spring问题汇总 (on IDEA MAC)
https://blog.csdn.net/weixin_42915286/article/details/85017091 亦存在
在Idea的spring工程里,经常会遇到Could not autowire. No beans of ‘xxxx’ type found的错误提示。但程序的编译和运行都是没有问题的,这个错误提示并不会产生影响。但红色的错误提示在有些有强迫症的程序员眼里,多多少少有些不太舒服。
原因可能有两个,第一个是IntellijIDEA本身工具的问题。第二个便是我们导入@Service包的时候导入包错误造成的
第一种原因,spring auto scan配置,在编辑情况下,无法找不到对应的bean,于是提示找不到对应bean的错误。常见于mybatis的mapper,如下
针对第一种原因,解决办法是:降低Autowired检测的级别,将Severity的级别由之前的error改成warning或其它可以忽略的级别。
针对第二种原因,解决方案当然是导入正确的包。首先我们来看下最容易导入的错误包,如下所示:
import com.alibaba.dubbo.config.annotation.Service;
正确的包应该是下面这个
import org.springframework.stereotype.Service;
——————————————————————————————
——————————————————————————————
——————————————————————————————
——————————————————————————————
——————————————————————————————
——————————————————————————————
参考博客
1.https://blog.csdn.net/qq_41264674/article/details/80651074
2.http://stackoverflow.com/questions/43003012/objc3648-class-javalaunchhelper-is-implemented-in-both
3.https://blog.csdn.net/anaini1314/article/details/71157791
4.https://www.2cto.com/database/201805/749887.html
7.https://blog.csdn.net/mr_ooo/article/details/54341184
——————————————————————————————
11.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.
Application.yml
中把
datasource:
driver-class-name: com.mysql.dbc.Driver
改成
datasource:
driver-class-name: com.mysql.cj.dbc.Driver
——————————————————————————————
12.javax.activation.DataSource
1.
下面这个问题卡了我一天。。。。。。无语
AFTER:select改成insert
——————————————————————————————
13.继承JpaRepository
后,找不到findOne()
方法
原因是Springboot的版本问题;
springboot2.0以下的版本都能良好的支持findOne(String id)
方法,而springboot2.0及其以上版本就只有findOne(Example
方法,所以解决此问题的方法就是在POM修改springboot的版本,比如改成1.5.10。 example)
或者在2.0以上版本中写findById(id).get()
方法。
——————————————————————————————
14.could not execute statement; SQL [n/a]; constraint [null];
这处:SB中,在IDE中设置了ddl-auto:update,于数据库相连,在POSTMAN使用POST方法后,无法在数据库中添加行而报错的问题;
因为自动生成的table中,ID没有设置Auto_Increment!!
或者在于把同时生成的hibernate_sequence表删除了,不能删除!!
——————————————————————————————
15.Caused by: org.springframework.dao.TransientDataAccessResourceException
: Error attempting to get column ‘cron_expression’ from result set. Cause: java.sql.SQLException: Cannot convert value ‘0 0/30 * * * ?’ from column 5 to TIMESTAMP.
; Cannot convert value ‘0 0/30 * * * ?’ from column 5 to TIMESTAMP.; nested exception is java.sql.SQLException: Cannot convert value ‘0 0/30 * * * ?’ from column 5 to TIMESTAMP.
SpringBoot: 找重点,重点在于org.springframework.dao.TransientDataAccessResourceException
造成这个原因一般都是由于实体类和映射文件字段类型不一致,检查实体类和映射文件,修改过来即可。
项目中,实体类指:MySQL表中column名的属性;映射文件指:IDE中Entity.java
——————————————————————————————
15.SpringBoot第一次启动报错
Failed to configure a DataSource: 'url' attribute is not specified and no em
Reanson : Failed to determine a suitable driver class
解决方法:
Application中添加:
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
Reason: Failed to determine a suitable driver class
除了上面的原因,还可能是启动项添加了@EnableAutoConfiguration // 开启自动配置
而配置里还没写内容;
所以删除此注释就可以了;
——————————————————————————————
16.Failed to instantiate [com.xxx.xxx.dao]: Specified class is an interface
是一个接口(言下之意:接口上面没有任何注解)
我的情况是SpringBoot中:interface SysConfigDao
没有extends BaseDao
,或者extends错成BaseDao
——————————————————————————————
17.Spring boot
***************************
APPLICATION FAILED TO START
***************************
Description:
Field userMapper in com.xxx.service.Impl.UserServiceImpl required a bean of type 'com.xxx.dao.UserMapper' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Application中没有添加@MapperScan("com.xxx.dao")
——————————————————————————————
18.Spring boot The processing instruction target matching "[xX][mM][lL]" is not allowed.
XML文件的表头前不能有空格;
我的错误是在第一行是一整段空行;
另外,必须在最前面;
——————————————————————————————
19.Spring boot Error creating bean with name 'com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration'
pageHelper版本冲突,试试把POM中的版本换成
参考:https://blog.csdn.net/qq_32198005/article/details/78435648
——————————————————————————————
20.Invalid bound statement (not found):
巨坑!!!巨坑!!!
我遇到这个这个问题时是个连环报错,本质原因是序号21的问题,但被其他地方的错误掩盖了,导致我一直在假象上纠结;
移步问题21…
因为问题21的存在未被发现,所以我把其他正确的代码改错了;
我把application.yml
中的:
mybatis:
mapperLocations: classpath:dao/*Mapper.xml (正)
改成了
mybatis:
mapperLocations: classpath:com.example.boottest.dao (误)
在mapperLocations
错误的情况下,系统顺利启动,导致我一直忽视了检查本质问题;
经过别人提醒后,我把mapperLocations
修正后,程序暴露了本质问题:序号21;
话说回来,如果正常情况下遇到了本报错,解决方法有:
1.mapper.xml的
要写所映射接口的全称类名。
2.mapper.xml中的每个statement的id要和接口方法的方法名相同;
3.mapper.xml中定义的每个sql的parameterType要和接口方法的形参类型相同;(我写错此处路径)
4.mapper.xml中定义的每个sql的resultType要和接口方法的返回值的类型相同;
5.mapper.xml要和对应的mapper接口在同一个包下;
6.mapper.xml的命名规范遵守: 接口名+Mapper.xml
7.mapper.xml中删除中文代码,规范前不可以留空白行(此处犯过错误)
8.mapper.xml要按照规范放在resource - dao
中,若放在com
中容易出问题;
9.试试在POM -
中添加如下代码,防止mybatis的Mapper.xml丢失
10.serviceImpl类加一个@service注解,或者其他类中加上其他注解;
src/main/java
**/*.yml
**/*.xml
false
src/main/resources
**/*.yml
**/*.xml
false
另外,如果报错Invalid bound statement (not found):
,还可以试试在项目target文件夹
中查看编译后的路径;
很多路径问题看下编译后的目录就清楚了;
——————————————————————————————
21.Caused by: java.lang.ClassNotFoundException: Cannot find class: com.xxx.pojo.User
连环问题,报错找不到dao,找不到service,根源在于找不到entity类;
我这里的原因是因为mapper.xml中:代码复制粘贴过来新项目,表头的entity和mapper已改新路径,但是方法中有几处parameterType
没有改!!!
导致程序运行不起来!!!
——————————————————————————————
22.MultipartException : Current request is not a multipart request
Multipart文件上传功能;
我的问题在于Controller方法参数中MultioartFile file
的标签写错;
应该是@RequestBody MultipartFile file
我写成了@RequestParam("upload_file") MultipartFile file
(括号里的名字是为了给到JSP文件中,指定运行此方法的,但也没必要指定,直接把file名写到JSP中也好)
——————————————————————————————
23.java.lang.NoSuchMethodException: com.xxx.entity.Product.
这种情况一看就是低级错误,实体类或者MyBatis的属性顺序定义错了;
检查下实体类的定义顺序与构造器顺序是否一致;
检查下MyBatis.xml中顺序与实体类是否一致;
他们必须保证一致,才能正常运行;
——————————————————————————————
24.BindingException : Parameter not found. Available...
Mapper中的@Param("xxx")
写错了
——————————————————————————————
25.Exception in thread "main" java.lang.AbstractMethodError: ....ConfigFileApplicationListener.supportsSourceType(Ljava/lang/Class;)Z
因为POM中已经定义了版本控制:
1.8
但我在依赖中仍然单独写了版本号,比如:
org.springframework
spring-context
4.3.9.RELEASE
去掉单独的版本号即可;
——————————————————————————————
NoClassDefFoundError: org/springframework/core/KotlinDetector
NoSuchMethodError: org.springframework.core.KotlinDetector
java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.clearCache()V
IoC实验时,xml文件中写入Bean时,报错这三条;
原因是spring-beans \ spring-core \ spring-context这三个依赖的版本必须保持一致!!!
比如改成这样:
org.springframework
spring-core
5.0.2.RELEASE
org.springframework
spring-context
5.0.2.RELEASE
org.springframework
spring-beans
5.0.2.RELEASE
——————————————————————————————
基本上都是缺少jar包的问题:检查用到的jar包是否包含完整,包括用的jar包需要用的jar包。
——————————————————————————————
java.lang.IllegalStateException: Failed to load ApplicationContext
Failed to load property source from location 'classpath:/application-test.yml'
at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load
yml
中配置了两个spring
!spring:
thymeleaf:
spring:
redis:
——————————————————————————————
Application context not configured for this file
另还提醒一句
Spring Boot中,若想使XML文件生效,需要在启动类添加注解:
@ImportResource({"classpath:XXXXXXX.xml"})
——————————————————————————————
参考博客:
13.https://blog.csdn.net/u012211603/article/details/79828277 https://blog.csdn.net/qq_41973729/article/details/80000511#commentsedit
Cannot construct instance of xxx (no Creators, like defaultconstruct, exist)
是因为实体类中除了要配置有参构造器外,还要配置无参构造器!
——————————————————————————————
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
出现这个问题的原因有很多,很多时候不一定要参照网上的答案;
我的问题在于:
ConfigBean
中 定义Queue queue这个Bean时,Queue应该导入JMS
包,而错误导入成了java.util
包,导致Spring无法找到该Bean;
——————————————————————————————
ClassCastException: org.springframework.context.annotation.ConfigurationClassParser$ImportStack cannot be cast to javax.jms.Destination
也是因为测试类中导入Queue时,应该导入JMS
包,而错误导入成了java.util
包;
——————————————————————————————
——————————————————————————————
Exception: No runnable methods
因为JUnit类的方法上没有写@Test
;
或者将测试类改为abstract;(未验证)
——————————————————————————————
——————————————————————————————
——————————————————————————————
——————————————————————————————
java.net.ConnectException: ConnectException invoking http://xxx: Connection refused
Exception in thread "main" javax.xml.ws.WebServiceException: Could not send Message.
这个原因只是因为Client在调用Server时,Server关闭了…
把Server打开即可;
——————————————————————————————
NoSuchBeanDefinitionException ..... not available
——————————————————————————————
Consider defining a bean of type ‘XXX’ in your configuration.
方法1:
yml中添加:
mybatis:
typeAliasesPackage: com.xxx.xxx.dao.entity
mapperLocations: classpath:mapper/*.xml
方法2:
启动类添加@ComponentScan(basePackages…
@SpringBootApplication
@ComponentScan(basePackages = {"com.xxx.xxx.dao"})
方法3:
Mapper接口方法上添加@Mapper
@Mapper
public interface UserMapper {
}
org.yaml.snakeyaml.scanner.ScannerException: mapping values are not allowed here
CollectionUtils.isNotEmpty
不存在这个方法来自import org.apache.commons.collections4.CollectionUtils;
不是来自import org.springframework.util.CollectionUtils;
而且collections版本要大于3;
——————————————————————————————
——————————————————————————————
——————————————————————————————
——————————————————————————————
——————————————————————————————
——————————————————————————————
——————————————————————————————
——————————————————————————————
——————————————————————————————