首先说明一下,这里使用的是Springboot2.2.6.RELEASE版本,由于Springboot迭代很快,所以要注意版本问题。
1、SpringBoot整合Ehcache,修改pom文件,添加缓存支持启动器,和Ehcache缓存依赖jar包。
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <parent>
6 <groupId>org.springframework.boot</groupId>
7 <artifactId>spring-boot-starter-parent</artifactId>
8 <version>2.2.6.RELEASE</version>
9 <relativePath/> <!-- lookup parent from repository -->
10 </parent>
11 <groupId>com.bie.springboot</groupId>
12 <artifactId>springboot-redis</artifactId>
13 <version>0.0.1-SNAPSHOT</version>
14 <name>springboot-redis</name>
15 <description>Demo project for Spring Boot</description>
16
17 <properties>
18 <java.version>1.8</java.version>
19 </properties>
20
21 <dependencies>
22 <!-- springBoot 的启动器 -->
23 <dependency>
24 <groupId>org.springframework.boot</groupId>
25 <artifactId>spring-boot-starter-web</artifactId>
26 </dependency>
27 <!-- 测试工具的启动器 -->
28 <dependency>
29 <groupId>org.springframework.boot</groupId>
30 <artifactId>spring-boot-starter-test</artifactId>
31 <scope>test</scope>
32 <!-- <exclusions>
33 <exclusion>
34 <groupId>org.junit.vintage</groupId>
35 <artifactId>junit-vintage-engine</artifactId>
36 </exclusion>
37 </exclusions> -->
38 </dependency>
39
40 <!-- springBoot thymeleaf的启动器 -->
41 <dependency>
42 <groupId>org.springframework.boot</groupId>
43 <artifactId>spring-boot-starter-thymeleaf</artifactId>
44 </dependency>
45 <!-- springBoot 的启动器 -->
46 <dependency>
47 <groupId>org.springframework.boot</groupId>
48 <artifactId>spring-boot-starter-data-jpa</artifactId>
49 </dependency>
50 <!-- mysql -->
51 <dependency>
52 <groupId>mysql</groupId>
53 <artifactId>mysql-connector-java</artifactId>
54 </dependency>
55 <!-- druid 连接池 -->
56 <dependency>
57 <groupId>com.alibaba</groupId>
58 <artifactId>druid</artifactId>
59 <version>1.0.9</version>
60 </dependency>
61 <!-- SpringBoot 缓存支持启动器,只是支持了缓存,但是没有加入ehcache的jar包 -->
62 <dependency>
63 <groupId>org.springframework.boot</groupId>
64 <artifactId>spring-boot-starter-cache</artifactId>
65 </dependency>
66 <!-- Ehcache 坐标 -->
67 <dependency>
68 <groupId>net.sf.ehcache</groupId>
69 <artifactId>ehcache</artifactId>
70 </dependency>
71 </dependencies>
72
73 <build>
74 <plugins>
75 <plugin>
76 <groupId>org.springframework.boot</groupId>
77 <artifactId>spring-boot-maven-plugin</artifactId>
78 </plugin>
79 </plugins>
80 </build>
81
82 </project>
创建Ehcache的配置文件,文件名:ehcache.xml,所放置的位置:src/main/resources/ehcache.xml。
1 <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2 xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
3
4 <diskStore path="java.io.tmpdir"/>
5
6 <!--defaultCache:echcache的默认缓存策略 -->
7 <!--
8 maxElementsInMemory:缓存多少个对象。
9 eternal:是否做持久化处理。
10 timeToIdleSeconds:当前对象去访问缓存里面的对象时间间隔,单位是秒,超过120秒,从缓存中删除。
11 timeToLiveSeconds:当前对象从创建到在缓存里面的声明周期是多长时间,单位是秒,默认120秒,超过120秒,从缓存中删除。
12 maxElementsOnDisk:
13 diskExpiryThreadIntervalSeconds:
14 memoryStoreEvictionPolicy
15 -->
16 <defaultCache
17 maxElementsInMemory="10000"
18 eternal="false"
19 timeToIdleSeconds="120"
20 timeToLiveSeconds="120"
21 maxElementsOnDisk="10000000"
22 diskExpiryThreadIntervalSeconds="120"
23 memoryStoreEvictionPolicy="LRU">
24 <persistence strategy="localTempSwap"/>
25 </defaultCache>
26
27 <!-- 自定义缓存策略,自定义缓存策略的name属性值是users,定义多个缓存策略,name值是不可以相同的 -->
28 <cache name="users"
29 maxElementsInMemory="10000"
30 eternal="false"
31 timeToIdleSeconds="120"
32 timeToLiveSeconds="120"
33 maxElementsOnDisk="10000000"
34 diskExpiryThreadIntervalSeconds="120"
35 memoryStoreEvictionPolicy="LRU">
36 <persistence strategy="localTempSwap"/>
37 </cache>
38
39 </ehcache>
修改application.properties 文件,告知springboot,自己当前配置的ehcache.xml位置在那里,springboot在启动的时候可以对ehcache.xml配置文件进行解析,拿到缓存策略,交给ehcache去缓存处理。
1 # mysql驱动
2 # spring.datasource.driver-class-name=com.mysql.jdbc.Driver
3 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
4 # mysql链接
5 spring.datasource.url=jdbc:mysql://localhost:3306/biehl?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
6 # mysql账号
7 spring.datasource.username=root
8 # mysql密码
9 spring.datasource.password=123456
10
11 # 使用druid
12 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
13
14 # 执行更新操作
15 spring.jpa.hibernate.ddl-auto=update
16 # spring.jpa.hibernate.ddl-auto=validate
17
18 # 后台打印sql语句
19 spring.jpa.show-sql=true
20
21 # 告知springboot,自己当前配置的ehcache.xml位置在那里
22 spring.cache.ehcache.config=classpath:config/ehcache.xml
修改启动类SpringbootRedisApplication,新增@EnableCaching注解,springboot在启动的时候对缓存进行额外的启动。
1 package com.bie.springboot.springbootredis;
2
3 import org.springframework.boot.SpringApplication;
4 import org.springframework.boot.autoconfigure.SpringBootApplication;
5 import org.springframework.cache.annotation.EnableCaching;
6
7 @SpringBootApplication
8 @EnableCaching
9 public class SpringbootRedisApplication {
10
11 public static void main(String[] args) {
12 SpringApplication.run(SpringbootRedisApplication.class, args);
13 }
14
15 }
创建实体类,如下所示:
1 package com.bie.springboot.po;
2
3 import javax.persistence.*;
4
5 @Entity
6 @Table(name = "users")
7 public class Users {
8
9 @Id
10 @GeneratedValue(strategy = GenerationType.IDENTITY)
11 @Column(name = "id")
12 private Integer id;
13
14 @Column(name = "name")
15 private String name;
16
17 @Column(name = "age")
18 private Integer age;
19
20 public String getName() {
21 return name;
22 }
23
24 public void setName(String name) {
25 this.name = name;
26 }
27
28 public Integer getId() {
29 return id;
30 }
31
32 public void setId(Integer id) {
33 this.id = id;
34 }
35
36 public Integer getAge() {
37 return age;
38 }
39
40 public void setAge(Integer age) {
41 this.age = age;
42 }
43
44 public Users(Integer id, String name, Integer age) {
45 this.id = id;
46 this.name = name;
47 this.age = age;
48 }
49
50 @Override
51 public String toString() {
52 return "Users{" +
53 "id=" + id +
54 ", name='" + name + '\'' +
55 ", age=" + age +
56 '}';
57 }
58
59 public Users() {
60 }
61 }
创建dao层,数据交互层,这里使用了jpa,如果想要迅速开发,用这个还不错吧。
1 package com.bie.springboot.dao;
2
3 import com.bie.springboot.po.Users;
4 import org.springframework.data.jpa.repository.JpaRepository;
5
6 /**
7 * 参数一 T :当前需要映射的实体
8 * 参数二 ID :当前映射的实体中的OID的类型
9 */
10 public interface UsersRepository extends JpaRepository<Users, Integer> {
11 }
创建业务交互层的接口,和业务交互层的实现类,如下所示:
1 package com.bie.springboot.service;
2
3 import com.bie.springboot.po.Users;
4 import org.springframework.data.domain.Page;
5 import org.springframework.data.domain.Pageable;
6
7 import java.util.List;
8
9 public interface UsersService {
10
11 /**
12 * 查询所有用户
13 *
14 * @return
15 */
16 public List<Users> findUserAll();
17
18 /**
19 * 根据用户编号查询用户信息
20 *
21 * @return
22 */
23 public Users findUsersById(Integer id);
24
25 /**
26 * 分页查询用户信息
27 *
28 * @param pageable
29 * @return
30 */
31 public Page<Users> findUserByPage(Pageable pageable);
32
33 /**
34 * 保存用户信息
35 *
36 * @param users
37 */
38 public void saveUers(Users users);
39 }
1 package com.bie.springboot.service.impl;
2
3 import com.bie.springboot.dao.UsersRepository;
4 import com.bie.springboot.po.Users;
5 import com.bie.springboot.service.UsersService;
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.data.domain.Example;
8 import org.springframework.data.domain.Page;
9 import org.springframework.data.domain.Pageable;
10 import org.springframework.stereotype.Service;
11
12 import java.util.List;
13
14 @Service
15 public class UsersServiceImpl implements UsersService {
16
17 // 注入usersRepository
18 @Autowired
19 private UsersRepository usersRepository;
20
21 @Override
22 public List<Users> findUserAll() {
23 return this.usersRepository.findAll();
24 }
25
26 @Override
27 //@Cacheable:对当前查询的对象做缓存处理,value的值是自定义缓存策略的名称
28 // @Cacheable(value = "users")
29 public Users findUsersById(Integer id) {
30 Users users = new Users();
31 users.setId(id);
32 Example<Users> example = Example.of(users);
33 return this.usersRepository.findOne(example).get();
34 }
35
36 @Override
37 public Page<Users> findUserByPage(Pageable pageable) {
38 return this.usersRepository.findAll(pageable);
39 }
40
41 @Override
42 public void saveUers(Users users) {
43 this.usersRepository.save(users);
44 }
45
46 }
开始测试,使用测试类测试缓存的使用,嗯,各种炸裂报错。
1 package com.bie.springboot.springbootredis;
2
3 import com.bie.springboot.SpringbootRedisApplication;
4 import com.bie.springboot.service.UsersService;
5 import org.junit.jupiter.api.Test;
6 import org.junit.runner.RunWith;
7 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.boot.test.context.SpringBootTest;
9 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
10
11 @RunWith(SpringJUnit4ClassRunner.class)
12 @SpringBootTest(classes = SpringbootRedisApplication.class)
13 class SpringbootRedisApplicationTests {
14
15 @Autowired
16 private UsersService usersService;
17
18 @Test
19 public void testFindUserById() {
20 //第一次查询
21 System.out.println(this.usersService.findUsersById(1));
22 //第二次查询
23 System.out.println(this.usersService.findUsersById(1));
24 }
25
26 }
如果报错,java.sql.SQLException: validateConnection false,这里我操作的是修改了使用druid的版本。
15 . ____ _ __ _ _
16 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
17 ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
18 \\/ ___)| |_)| | | | | || (_| | ) ) ) )
19 ' |____| .__|_| |_|_| |_\__, | / / / /
20 =========|_|==============|___/=/_/_/_/
21 :: Spring Boot :: (v2.2.6.RELEASE)
22
23 2020-05-16 15:21:58.472 INFO 5404 --- [ main] c.b.s.s.SpringbootRedisApplicationTests : Starting SpringbootRedisApplicationTests on DESKTOP-V37QSSE with PID 5404 (started by biehl in D:\program\idea\IntelliJ IDEA 2019.1.3\workspace_idea\springboot-redis)
24 2020-05-16 15:21:58.477 INFO 5404 --- [ main] c.b.s.s.SpringbootRedisApplicationTests : No active profile set, falling back to default profiles: default
25 2020-05-16 15:21:59.748 INFO 5404 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
26 2020-05-16 15:21:59.826 INFO 5404 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 61ms. Found 1 JPA repository interfaces.
27 2020-05-16 15:22:01.495 INFO 5404 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
28 2020-05-16 15:22:01.596 INFO 5404 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.12.Final
29 2020-05-16 15:22:01.810 INFO 5404 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
30 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.
31 2020-05-16 15:22:02.068 WARN 5404 --- [ main] c.a.d.p.v.MySqlValidConnectionChecker : Cannot resolve com.mysq.jdbc.Connection.ping method. Will use 'SELECT 1' instead.
32
33 java.lang.NullPointerException: null
34 at com.alibaba.druid.pool.vendor.MySqlValidConnectionChecker.<init>(MySqlValidConnectionChecker.java:48) ~[druid-1.0.9.jar:1.0.9]
35 at com.alibaba.druid.pool.DruidDataSource.initValidConnectionChecker(DruidDataSource.java:878) [druid-1.0.9.jar:1.0.9]
36 at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:594) [druid-1.0.9.jar:1.0.9]
37 at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:915) [druid-1.0.9.jar:1.0.9]
38 at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:911) [druid-1.0.9.jar:1.0.9]
39 at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:98) [druid-1.0.9.jar:1.0.9]
40 at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
41 at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
42 at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
43 at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
44 at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
45 at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
46 at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
47 at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
48 at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
49 at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
50 at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
51 at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
52 at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:176) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
53 at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:118) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
54 at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1202) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
55 at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1233) [hibernate-core-5.4.12.Final.jar:5.4.12.Final]
56 at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) [spring-orm-5.2.5.RELEASE.jar:5.2.5.RELEASE]
57 at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) [spring-orm-5.2.5.RELEASE.jar:5.2.5.RELEASE]
58 at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:391) [spring-orm-5.2.5.RELEASE.jar:5.2.5.RELEASE]
59 at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:378) [spring-orm-5.2.5.RELEASE.jar:5.2.5.RELEASE]
60 at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) [spring-orm-5.2.5.RELEASE.jar:5.2.5.RELEASE]
61 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
62 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1792) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
63 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
64 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
65 at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
66 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
67 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
68 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
69 at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1108) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
70 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
71 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
72 at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
73 at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
74 at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
75 at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:126) ~[spring-boot-test-2.2.6.RELEASE.jar:2.2.6.RELEASE]
76 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
77 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
78 at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
79 at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
80 at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
81 at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
82 at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:98) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
83 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$5(ClassBasedTestDescriptor.java:337) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
84 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable(ClassBasedTestDescriptor.java:342) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
85 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$6(ClassBasedTestDescriptor.java:337) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
86 at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_191]
87 at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[na:1.8.0_191]
88 at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382) ~[na:1.8.0_191]
89 at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_191]
90 at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_191]
91 at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312) ~[na:1.8.0_191]
92 at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:743) ~[na:1.8.0_191]
93 at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742) ~[na:1.8.0_191]
94 at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) ~[na:1.8.0_191]
95 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors(ClassBasedTestDescriptor.java:336) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
96 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:259) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
97 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$2(ClassBasedTestDescriptor.java:252) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
98 at java.util.Optional.orElseGet(Optional.java:267) ~[na:1.8.0_191]
99 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$3(ClassBasedTestDescriptor.java:251) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
100 at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:29) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
101 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0(TestMethodTestDescriptor.java:106) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
102 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
103 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:105) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
104 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:69) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
105 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$1(NodeTestTask.java:107) ~[junit-platform-engine-1.5.2.jar:1.5.2]
106 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
107 at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:107) ~[junit-platform-engine-1.5.2.jar:1.5.2]
108 at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:75) ~[junit-platform-engine-1.5.2.jar:1.5.2]
109 at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_191]
110 at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) ~[junit-platform-engine-1.5.2.jar:1.5.2]
111 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) ~[junit-platform-engine-1.5.2.jar:1.5.2]
112 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
113 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125) ~[junit-platform-engine-1.5.2.jar:1.5.2]
114 at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135) ~[junit-platform-engine-1.5.2.jar:1.5.2]
115 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123) ~[junit-platform-engine-1.5.2.jar:1.5.2]
116 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
117 at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122) ~[junit-platform-engine-1.5.2.jar:1.5.2]
118 at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80) ~[junit-platform-engine-1.5.2.jar:1.5.2]
119 at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_191]
120 at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) ~[junit-platform-engine-1.5.2.jar:1.5.2]
121 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) ~[junit-platform-engine-1.5.2.jar:1.5.2]
122 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
123 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125) ~[junit-platform-engine-1.5.2.jar:1.5.2]
124 at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135) ~[junit-platform-engine-1.5.2.jar:1.5.2]
125 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123) ~[junit-platform-engine-1.5.2.jar:1.5.2]
126 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
127 at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122) ~[junit-platform-engine-1.5.2.jar:1.5.2]
128 at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80) ~[junit-platform-engine-1.5.2.jar:1.5.2]
129 at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) ~[junit-platform-engine-1.5.2.jar:1.5.2]
130 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) ~[junit-platform-engine-1.5.2.jar:1.5.2]
131 at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) ~[junit-platform-engine-1.5.2.jar:1.5.2]
132 at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:229) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
133 at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:197) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
134 at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:211) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
135 at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:191) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
136 at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
137 at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69) ~[junit5-rt.jar:na]
138 at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) ~[junit-rt.jar:na]
139 at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) ~[junit-rt.jar:na]
140 at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) ~[junit-rt.jar:na]
141
142 2020-05-16 15:22:02.082 INFO 5404 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
143 2020-05-16 15:22:02.298 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
144
145 java.sql.SQLException: validateConnection false
146 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
147 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
148 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
149
150 2020-05-16 15:22:02.311 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
151
152 java.sql.SQLException: validateConnection false
153 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
154 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
155 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
156
157 2020-05-16 15:22:02.317 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
158
159 java.sql.SQLException: validateConnection false
160 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
161 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
162 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
163
164 2020-05-16 15:22:02.322 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
165
166 java.sql.SQLException: validateConnection false
167 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
168 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
169 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
170
171 2020-05-16 15:22:02.327 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
172
173 java.sql.SQLException: validateConnection false
174 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
175 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
176 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
177
178 2020-05-16 15:22:02.331 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
179
180 java.sql.SQLException: validateConnection false
181 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
182 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
183 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
184
185 2020-05-16 15:22:02.335 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
186
187 java.sql.SQLException: validateConnection false
188 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
189 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
190 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
191
192 2020-05-16 15:22:02.341 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
193
194 java.sql.SQLException: validateConnection false
195 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
196 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
197 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
198
199 2020-05-16 15:22:02.344 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
200
201 java.sql.SQLException: validateConnection false
202 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
203 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
204 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
205
206 2020-05-16 15:22:02.349 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
207
208 java.sql.SQLException: validateConnection false
209 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
210 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
211 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
212
213 2020-05-16 15:22:02.353 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
214
215 java.sql.SQLException: validateConnection false
216 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
217 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
218 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
219
220 2020-05-16 15:22:02.359 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
221
222 java.sql.SQLException: validateConnection false
223 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
224 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
225 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
226
227 2020-05-16 15:22:02.363 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
228
229 java.sql.SQLException: validateConnection false
230 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
231 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
232 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
233
234 2020-05-16 15:22:02.366 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
235
236 java.sql.SQLException: validateConnection false
237 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
238 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
239 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
240
241 2020-05-16 15:22:02.369 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
242
243 java.sql.SQLException: validateConnection false
244 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
245 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
246 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
247
248 2020-05-16 15:22:02.374 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
249
250 java.sql.SQLException: validateConnection false
251 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
252 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
253 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
254
255 2020-05-16 15:22:02.378 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
256
257 java.sql.SQLException: validateConnection false
258 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
259 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
260 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
261
262 2020-05-16 15:22:02.381 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
263
264 java.sql.SQLException: validateConnection false
265 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
266 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
267 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
268
269 2020-05-16 15:22:02.385 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
270
271 java.sql.SQLException: validateConnection false
272 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
273 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
274 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
275
276 2020-05-16 15:22:02.389 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
277
278 java.sql.SQLException: validateConnection false
279 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
280 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
281 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
282
283 2020-05-16 15:22:02.397 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
284
285 java.sql.SQLException: validateConnection false
286 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
287 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
288 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
289
290 2020-05-16 15:22:02.400 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
291
292 java.sql.SQLException: validateConnection false
293 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
294 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
295 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
296
297 2020-05-16 15:22:02.404 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
298
299 java.sql.SQLException: validateConnection false
300 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
301 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
302 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
303
304 2020-05-16 15:22:02.407 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
305
306 java.sql.SQLException: validateConnection false
307 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
308 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
309 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
310
311 2020-05-16 15:22:02.410 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
312
313 java.sql.SQLException: validateConnection false
314 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
315 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
316 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
317
318 2020-05-16 15:22:02.413 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
319
320 java.sql.SQLException: validateConnection false
321 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
322 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
323 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
324
325 2020-05-16 15:22:02.416 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
326
327 java.sql.SQLException: validateConnection false
328 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
329 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
330 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
331
332 2020-05-16 15:22:02.420 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
333
334 java.sql.SQLException: validateConnection false
335 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
336 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
337 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
338
339 2020-05-16 15:22:02.423 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
340
341 java.sql.SQLException: validateConnection false
342 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
343 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
344 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
345
346 2020-05-16 15:22:02.427 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
347
348 java.sql.SQLException: validateConnection false
349 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
350 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
351 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
352
353 2020-05-16 15:22:02.430 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
354
355 java.sql.SQLException: validateConnection false
356 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
357 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
358 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
359
360 2020-05-16 15:22:32.437 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
361
362 java.sql.SQLException: validateConnection false
363 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
364 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
365 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
366
367 2020-05-16 15:23:02.454 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
368
369 java.sql.SQLException: validateConnection false
370 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
371 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
372 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
373
374 2020-05-16 15:23:32.459 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
375
376 java.sql.SQLException: validateConnection false
377 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
378 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
379 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
380
381 2020-05-16 15:24:02.466 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
382
383 java.sql.SQLException: validateConnection false
384 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
385 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
386 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
387
388 2020-05-16 15:24:32.472 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
389
390 java.sql.SQLException: validateConnection false
391 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
392 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
393 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
394
395 2020-05-16 15:25:02.479 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
396
397 java.sql.SQLException: validateConnection false
398 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
399 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
400 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
401
402 2020-05-16 15:25:32.489 ERROR 5404 --- [eate-1440939580] com.alibaba.druid.pool.DruidDataSource : create connection error
403
404 java.sql.SQLException: validateConnection false
405 at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1216) ~[druid-1.0.9.jar:1.0.9]
406 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1439) ~[druid-1.0.9.jar:1.0.9]
407 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844) ~[druid-1.0.9.jar:1.0.9]
将版本druid1.0.9换成了druid1.1.10版本,解决了这个报错问题。
1 <!-- druid 连接池 -->
2 <dependency>
3 <groupId>com.alibaba</groupId>
4 <artifactId>druid</artifactId>
5 <version>1.0.9</version>
6 </dependency>
嗯,如果遇到这个错误,可以修改一下ehcache.xml文件的位置。
16 . ____ _ __ _ _
17 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
18 ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
19 \\/ ___)| |_)| | | | | || (_| | ) ) ) )
20 ' |____| .__|_| |_|_| |_\__, | / / / /
21 =========|_|==============|___/=/_/_/_/
22 :: Spring Boot :: (v2.2.6.RELEASE)
23
24 2020-05-16 15:29:09.021 INFO 15524 --- [ main] c.b.s.s.SpringbootRedisApplicationTests : Starting SpringbootRedisApplicationTests on DESKTOP-V37QSSE with PID 15524 (started by biehl in D:\program\idea\IntelliJ IDEA 2019.1.3\workspace_idea\springboot-redis)
25 2020-05-16 15:29:09.023 INFO 15524 --- [ main] c.b.s.s.SpringbootRedisApplicationTests : No active profile set, falling back to default profiles: default
26 2020-05-16 15:29:10.030 INFO 15524 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
27 2020-05-16 15:29:10.147 INFO 15524 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 98ms. Found 1 JPA repository interfaces.
28 2020-05-16 15:29:10.824 WARN 15524 --- [ main] o.s.w.c.s.GenericWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cacheManager' defined in class path resource [org/springframework/boot/autoconfigure/cache/EhCacheCacheConfiguration.class]: Unsatisfied dependency expressed through method 'cacheManager' parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ehCacheCacheManager' defined in class path resource [org/springframework/boot/autoconfigure/cache/EhCacheCacheConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.sf.ehcache.CacheManager]: Factory method 'ehCacheCacheManager' threw exception; nested exception is java.lang.IllegalArgumentException: Cache configuration does not exist 'ServletContext resource [/ehcache.xml]'
29 2020-05-16 15:29:10.835 INFO 15524 --- [ main] ConditionEvaluationReportLoggingListener :
30
31 Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
32 2020-05-16 15:29:10.844 ERROR 15524 --- [ main] o.s.boot.SpringApplication : Application run failed
33
34 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cacheManager' defined in class path resource [org/springframework/boot/autoconfigure/cache/EhCacheCacheConfiguration.class]: Unsatisfied dependency expressed through method 'cacheManager' parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ehCacheCacheManager' defined in class path resource [org/springframework/boot/autoconfigure/cache/EhCacheCacheConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.sf.ehcache.CacheManager]: Factory method 'ehCacheCacheManager' threw exception; nested exception is java.lang.IllegalArgumentException: Cache configuration does not exist 'ServletContext resource [/ehcache.xml]'
35 at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
36 at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:539) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
37 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
38 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
39 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
40 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
41 at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
42 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
43 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
44 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
45 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:310) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
46 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
47 at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1108) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
48 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
49 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
50 at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
51 at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
52 at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
53 at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:126) [spring-boot-test-2.2.6.RELEASE.jar:2.2.6.RELEASE]
54 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) [spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
55 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124) [spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
56 at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123) [spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
57 at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190) [spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
58 at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132) [spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
59 at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244) [spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
60 at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:98) [spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
61 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$5(ClassBasedTestDescriptor.java:337) [junit-jupiter-engine-5.5.2.jar:5.5.2]
62 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable(ClassBasedTestDescriptor.java:342) [junit-jupiter-engine-5.5.2.jar:5.5.2]
63 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$6(ClassBasedTestDescriptor.java:337) [junit-jupiter-engine-5.5.2.jar:5.5.2]
64 at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_191]
65 at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[na:1.8.0_191]
66 at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382) ~[na:1.8.0_191]
67 at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_191]
68 at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_191]
69 at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312) ~[na:1.8.0_191]
70 at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:743) ~[na:1.8.0_191]
71 at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742) ~[na:1.8.0_191]
72 at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) ~[na:1.8.0_191]
73 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors(ClassBasedTestDescriptor.java:336) [junit-jupiter-engine-5.5.2.jar:5.5.2]
74 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:259) [junit-jupiter-engine-5.5.2.jar:5.5.2]
75 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$2(ClassBasedTestDescriptor.java:252) [junit-jupiter-engine-5.5.2.jar:5.5.2]
76 at java.util.Optional.orElseGet(Optional.java:267) ~[na:1.8.0_191]
77 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$3(ClassBasedTestDescriptor.java:251) [junit-jupiter-engine-5.5.2.jar:5.5.2]
78 at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:29) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
79 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0(TestMethodTestDescriptor.java:106) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
80 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
81 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:105) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
82 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:69) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
83 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$1(NodeTestTask.java:107) ~[junit-platform-engine-1.5.2.jar:1.5.2]
84 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
85 at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:107) ~[junit-platform-engine-1.5.2.jar:1.5.2]
86 at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:75) ~[junit-platform-engine-1.5.2.jar:1.5.2]
87 at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_191]
88 at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) ~[junit-platform-engine-1.5.2.jar:1.5.2]
89 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) ~[junit-platform-engine-1.5.2.jar:1.5.2]
90 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
91 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125) ~[junit-platform-engine-1.5.2.jar:1.5.2]
92 at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135) ~[junit-platform-engine-1.5.2.jar:1.5.2]
93 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123) ~[junit-platform-engine-1.5.2.jar:1.5.2]
94 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
95 at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122) ~[junit-platform-engine-1.5.2.jar:1.5.2]
96 at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80) ~[junit-platform-engine-1.5.2.jar:1.5.2]
97 at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_191]
98 at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) ~[junit-platform-engine-1.5.2.jar:1.5.2]
99 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) ~[junit-platform-engine-1.5.2.jar:1.5.2]
100 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
101 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125) ~[junit-platform-engine-1.5.2.jar:1.5.2]
102 at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135) ~[junit-platform-engine-1.5.2.jar:1.5.2]
103 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123) ~[junit-platform-engine-1.5.2.jar:1.5.2]
104 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
105 at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122) ~[junit-platform-engine-1.5.2.jar:1.5.2]
106 at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80) ~[junit-platform-engine-1.5.2.jar:1.5.2]
107 at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) ~[junit-platform-engine-1.5.2.jar:1.5.2]
108 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) ~[junit-platform-engine-1.5.2.jar:1.5.2]
109 at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) ~[junit-platform-engine-1.5.2.jar:1.5.2]
110 at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:229) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
111 at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:197) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
112 at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:211) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
113 at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:191) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
114 at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
115 at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69) ~[junit5-rt.jar:na]
116 at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) ~[junit-rt.jar:na]
117 at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) ~[junit-rt.jar:na]
118 at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) ~[junit-rt.jar:na]
119 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ehCacheCacheManager' defined in class path resource [org/springframework/boot/autoconfigure/cache/EhCacheCacheConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.sf.ehcache.CacheManager]: Factory method 'ehCacheCacheManager' threw exception; nested exception is java.lang.IllegalArgumentException: Cache configuration does not exist 'ServletContext resource [/ehcache.xml]'
120 at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:656) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
121 at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
122 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
123 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
124 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
125 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
126 at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
127 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
128 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
129 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
130 at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
131 at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1290) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
132 at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1210) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
133 at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
134 at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
135 ... 83 common frames omitted
136 Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.sf.ehcache.CacheManager]: Factory method 'ehCacheCacheManager' threw exception; nested exception is java.lang.IllegalArgumentException: Cache configuration does not exist 'ServletContext resource [/ehcache.xml]'
137 at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
138 at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
139 ... 97 common frames omitted
140 Caused by: java.lang.IllegalArgumentException: Cache configuration does not exist 'ServletContext resource [/ehcache.xml]'
141 at org.springframework.util.Assert.isTrue(Assert.java:136) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
142 at org.springframework.boot.autoconfigure.cache.CacheProperties.resolveConfigLocation(CacheProperties.java:110) ~[spring-boot-autoconfigure-2.2.6.RELEASE.jar:2.2.6.RELEASE]
143 at org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration.ehCacheCacheManager(EhCacheCacheConfiguration.java:54) ~[spring-boot-autoconfigure-2.2.6.RELEASE.jar:2.2.6.RELEASE]
144 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
145 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
146 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
147 at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
148 at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
149 ... 98 common frames omitted
150
151 2020-05-16 15:29:10.849 ERROR 15524 --- [ main] o.s.test.context.TestContextManager : Caught exception while allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener@2ea41516] to prepare test instance [com.bie.springboot.springbootredis.SpringbootRedisApplicationTests@5b498842]
152
153 java.lang.IllegalStateException: Failed to load ApplicationContext
154 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
155 at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
156 at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
157 at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
158 at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
159 at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:98) [spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
160 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$5(ClassBasedTestDescriptor.java:337) [junit-jupiter-engine-5.5.2.jar:5.5.2]
161 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable(ClassBasedTestDescriptor.java:342) [junit-jupiter-engine-5.5.2.jar:5.5.2]
162 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$6(ClassBasedTestDescriptor.java:337) [junit-jupiter-engine-5.5.2.jar:5.5.2]
163 at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_191]
164 at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[na:1.8.0_191]
165 at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382) ~[na:1.8.0_191]
166 at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_191]
167 at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_191]
168 at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312) ~[na:1.8.0_191]
169 at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:743) ~[na:1.8.0_191]
170 at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742) ~[na:1.8.0_191]
171 at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) ~[na:1.8.0_191]
172 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors(ClassBasedTestDescriptor.java:336) [junit-jupiter-engine-5.5.2.jar:5.5.2]
173 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:259) [junit-jupiter-engine-5.5.2.jar:5.5.2]
174 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$2(ClassBasedTestDescriptor.java:252) [junit-jupiter-engine-5.5.2.jar:5.5.2]
175 at java.util.Optional.orElseGet(Optional.java:267) ~[na:1.8.0_191]
176 at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$3(ClassBasedTestDescriptor.java:251) [junit-jupiter-engine-5.5.2.jar:5.5.2]
177 at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:29) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
178 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0(TestMethodTestDescriptor.java:106) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
179 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
180 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:105) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
181 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:69) ~[junit-jupiter-engine-5.5.2.jar:5.5.2]
182 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$1(NodeTestTask.java:107) ~[junit-platform-engine-1.5.2.jar:1.5.2]
183 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
184 at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:107) ~[junit-platform-engine-1.5.2.jar:1.5.2]
185 at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:75) ~[junit-platform-engine-1.5.2.jar:1.5.2]
186 at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_191]
187 at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) ~[junit-platform-engine-1.5.2.jar:1.5.2]
188 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) ~[junit-platform-engine-1.5.2.jar:1.5.2]
189 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
190 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125) ~[junit-platform-engine-1.5.2.jar:1.5.2]
191 at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135) ~[junit-platform-engine-1.5.2.jar:1.5.2]
192 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123) ~[junit-platform-engine-1.5.2.jar:1.5.2]
193 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
194 at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122) ~[junit-platform-engine-1.5.2.jar:1.5.2]
195 at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80) ~[junit-platform-engine-1.5.2.jar:1.5.2]
196 at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_191]
197 at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) ~[junit-platform-engine-1.5.2.jar:1.5.2]
198 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) ~[junit-platform-engine-1.5.2.jar:1.5.2]
199 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
200 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125) ~[junit-platform-engine-1.5.2.jar:1.5.2]
201 at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135) ~[junit-platform-engine-1.5.2.jar:1.5.2]
202 at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123) ~[junit-platform-engine-1.5.2.jar:1.5.2]
203 at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.5.2.jar:1.5.2]
204 at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122) ~[junit-platform-engine-1.5.2.jar:1.5.2]
205 at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80) ~[junit-platform-engine-1.5.2.jar:1.5.2]
206 at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) ~[junit-platform-engine-1.5.2.jar:1.5.2]
207 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) ~[junit-platform-engine-1.5.2.jar:1.5.2]
208 at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) ~[junit-platform-engine-1.5.2.jar:1.5.2]
209 at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:229) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
210 at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:197) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
211 at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:211) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
212 at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:191) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
213 at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128) ~[junit-platform-launcher-1.5.2.jar:1.5.2]
214 at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69) ~[junit5-rt.jar:na]
215 at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) ~[junit-rt.jar:na]
216 at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) ~[junit-rt.jar:na]
217 at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) ~[junit-rt.jar:na]
218 Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cacheManager' defined in class path resource [org/springframework/boot/autoconfigure/cache/EhCacheCacheConfiguration.class]: Unsatisfied dependency expressed through method 'cacheManager' parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ehCacheCacheManager' defined in class path resource [org/springframework/boot/autoconfigure/cache/EhCacheCacheConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.sf.ehcache.CacheManager]: Factory method 'ehCacheCacheManager' threw exception; nested exception is java.lang.IllegalArgumentException: Cache configuration does not exist 'ServletContext resource [/ehcache.xml]'
219 at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
220 at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:539) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
221 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
222 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
223 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
224 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
225 at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
226 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
227 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
228 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
229 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:310) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
230 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
231 at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1108) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
232 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
233 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
234 at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
235 at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
236 at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
237 at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:126) ~[spring-boot-test-2.2.6.RELEASE.jar:2.2.6.RELEASE]
238 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
239 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124) ~[spring-test-5.2.5.RELEASE.jar:5.2.5.RELEASE]
240 ... 63 common frames omitted
241 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ehCacheCacheManager' defined in class path resource [org/springframework/boot/autoconfigure/cache/EhCacheCacheConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.sf.ehcache.CacheManager]: Factory method 'ehCacheCacheManager' threw exception; nested exception is java.lang.IllegalArgumentException: Cache configuration does not exist 'ServletContext resource [/ehcache.xml]'
242 at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:656) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
243 at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
244 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
245 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
246 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
247 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
248 at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
249 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
250 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
251 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
252 at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
253 at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1290) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
254 at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1210) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
255 at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
256 at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
257 ... 83 common frames omitted
258 Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.sf.ehcache.CacheManager]: Factory method 'ehCacheCacheManager' threw exception; nested exception is java.lang.IllegalArgumentException: Cache configuration does not exist 'ServletContext resource [/ehcache.xml]'
259 at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
260 at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
261 ... 97 common frames omitted
262 Caused by: java.lang.IllegalArgumentException: Cache configuration does not exist 'ServletContext resource [/ehcache.xml]'
263 at org.springframework.util.Assert.isTrue(Assert.java:136) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
264 at org.springframework.boot.autoconfigure.cache.CacheProperties.resolveConfigLocation(CacheProperties.java:110) ~[spring-boot-autoconfigure-2.2.6.RELEASE.jar:2.2.6.RELEASE]
265 at org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration.ehCacheCacheManager(EhCacheCacheConfiguration.java:54) ~[spring-boot-autoconfigure-2.2.6.RELEASE.jar:2.2.6.RELEASE]
266 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
267 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
268 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
269 at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
270 at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
271 ... 98 common frames omitted
272
273
274 Process finished with exit code -1
ehcache.xml的位置修改为,如下所示位置即可。
springboot默认的文件的加载路径:/META-INF/resources/、/resources/、/static/、/public/。所以不在该路径下面的文件,就要自己讲文件路径添加到工程里面,用过classpath:config/ehcache.xml的方式
如果此时,加上了@Cacheable(value = "users")方法,value的值是自定义缓存策略的名称,那么实体类就要实现可序列化接口,不然报错。Ehcache支持磁盘缓存,既然是磁盘缓存就要实现可序列号接口。
1 package com.bie.springboot.po;
2
3 import javax.persistence.*;
4 import java.io.Serializable;
5
6 @Entity
7 @Table(name = "users")
8 public class Users implements Serializable {
9
10 @Id
11 @GeneratedValue(strategy = GenerationType.IDENTITY)
12 @Column(name = "id")
13 private Integer id;
14
15 @Column(name = "name")
16 private String name;
17
18 @Column(name = "age")
19 private Integer age;
20
21 public String getName() {
22 return name;
23 }
24
25 public void setName(String name) {
26 this.name = name;
27 }
28
29 public Integer getId() {
30 return id;
31 }
32
33 public void setId(Integer id) {
34 this.id = id;
35 }
36
37 public Integer getAge() {
38 return age;
39 }
40
41 public void setAge(Integer age) {
42 this.age = age;
43 }
44
45 public Users(Integer id, String name, Integer age) {
46 this.id = id;
47 this.name = name;
48 this.age = age;
49 }
50
51 @Override
52 public String toString() {
53 return "Users{" +
54 "id=" + id +
55 ", name='" + name + '\'' +
56 ", age=" + age +
57 '}';
58 }
59
60 public Users() {
61 }
62 }
报错,如下所示:
1 . ____ _ __ _ _
2 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
3 ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
4 \\/ ___)| |_)| | | | | || (_| | ) ) ) )
5 ' |____| .__|_| |_|_| |_\__, | / / / /
6 =========|_|==============|___/=/_/_/_/
7 :: Spring Boot :: (v2.2.6.RELEASE)
8
9 2020-05-16 15:35:39.853 INFO 17968 --- [ main] c.b.s.s.SpringbootRedisApplicationTests : Starting SpringbootRedisApplicationTests on DESKTOP-V37QSSE with PID 17968 (started by biehl in D:\program\idea\IntelliJ IDEA 2019.1.3\workspace_idea\springboot-redis)
10 2020-05-16 15:35:39.855 INFO 17968 --- [ main] c.b.s.s.SpringbootRedisApplicationTests : No active profile set, falling back to default profiles: default
11 2020-05-16 15:35:41.202 INFO 17968 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
12 2020-05-16 15:35:41.277 INFO 17968 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 61ms. Found 1 JPA repository interfaces.
13 2020-05-16 15:35:43.043 INFO 17968 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
14 2020-05-16 15:35:43.128 INFO 17968 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.12.Final
15 2020-05-16 15:35:43.290 INFO 17968 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
16 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.
17 2020-05-16 15:35:43.506 INFO 17968 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
18 2020-05-16 15:35:43.673 INFO 17968 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL57Dialect
19 2020-05-16 15:35:44.350 INFO 17968 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
20 2020-05-16 15:35:44.356 INFO 17968 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
21 2020-05-16 15:35:44.919 WARN 17968 --- [ 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
22 2020-05-16 15:35:45.213 INFO 17968 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
23 2020-05-16 15:35:45.484 WARN 17968 --- [ main] ion$DefaultTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration)
24 2020-05-16 15:35:45.721 INFO 17968 --- [ main] c.b.s.s.SpringbootRedisApplicationTests : Started SpringbootRedisApplicationTests in 6.279 seconds (JVM running for 8.114)
25 Hibernate: select users0_.id as id1_0_, users0_.age as age2_0_, users0_.name as name3_0_ from users users0_ where users0_.id=1
26 -------------------------------------Users{id=1, name='admin', age=27}
27 -------------------------------------Users{id=1, name='admin', age=27}
28 2020-05-16 15:35:46.206 INFO 17968 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
29 2020-05-16 15:35:46.207 INFO 17968 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
30 2020-05-16 15:35:46.207 ERROR 17968 --- [ users.data] n.s.e.store.disk.DiskStorageFactory : Disk Write of 1 failed:
31
32 java.io.NotSerializableException: com.bie.springboot.po.Users
33 at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) ~[na:1.8.0_191]
34 at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) ~[na:1.8.0_191]
35 at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:441) ~[na:1.8.0_191]
36 at net.sf.ehcache.Element.writeObject(Element.java:876) ~[ehcache-2.10.6.jar:2.10.6]
37 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
38 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
39 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
40 at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
41 at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140) ~[na:1.8.0_191]
42 at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) ~[na:1.8.0_191]
43 at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) ~[na:1.8.0_191]
44 at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) ~[na:1.8.0_191]
45 at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) ~[na:1.8.0_191]
46 at net.sf.ehcache.util.MemoryEfficientByteArrayOutputStream.serialize(MemoryEfficientByteArrayOutputStream.java:97) ~[ehcache-2.10.6.jar:2.10.6]
47 at net.sf.ehcache.store.disk.DiskStorageFactory.serializeElement(DiskStorageFactory.java:403) ~[ehcache-2.10.6.jar:2.10.6]
48 at net.sf.ehcache.store.disk.DiskStorageFactory.write(DiskStorageFactory.java:385) ~[ehcache-2.10.6.jar:2.10.6]
49 at net.sf.ehcache.store.disk.DiskStorageFactory$DiskWriteTask.call(DiskStorageFactory.java:477) ~[ehcache-2.10.6.jar:2.10.6]
50 at net.sf.ehcache.store.disk.DiskStorageFactory$PersistentDiskWriteTask.call(DiskStorageFactory.java:1071) [ehcache-2.10.6.jar:2.10.6]
51 at net.sf.ehcache.store.disk.DiskStorageFactory$PersistentDiskWriteTask.call(DiskStorageFactory.java:1055) [ehcache-2.10.6.jar:2.10.6]
52 at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_191]
53 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_191]
54 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_191]
55 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_191]
56 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_191]
57 at java.lang.Thread.run(Thread.java:748) [na:1.8.0_191]
58
59 2020-05-16 15:35:46.221 INFO 17968 --- [extShutdownHook] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} closed
60 2020-05-16 15:35:46.229 ERROR 17968 --- [extShutdownHook] n.s.e.store.disk.DiskStorageFactory : Disk Write of 1 failed:
61
62 java.io.NotSerializableException: com.bie.springboot.po.Users
63 at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) ~[na:1.8.0_191]
64 at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) ~[na:1.8.0_191]
65 at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:441) ~[na:1.8.0_191]
66 at net.sf.ehcache.Element.writeObject(Element.java:876) ~[ehcache-2.10.6.jar:2.10.6]
67 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
68 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
69 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
70 at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
71 at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140) ~[na:1.8.0_191]
72 at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) ~[na:1.8.0_191]
73 at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) ~[na:1.8.0_191]
74 at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) ~[na:1.8.0_191]
75 at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) ~[na:1.8.0_191]
76 at net.sf.ehcache.util.MemoryEfficientByteArrayOutputStream.serialize(MemoryEfficientByteArrayOutputStream.java:97) ~[ehcache-2.10.6.jar:2.10.6]
77 at net.sf.ehcache.store.disk.DiskStorageFactory.serializeElement(DiskStorageFactory.java:403) [ehcache-2.10.6.jar:2.10.6]
78 at net.sf.ehcache.store.disk.DiskStorageFactory.write(DiskStorageFactory.java:385) [ehcache-2.10.6.jar:2.10.6]
79 at net.sf.ehcache.store.disk.DiskStorageFactory$DiskWriteTask.call(DiskStorageFactory.java:477) ~[ehcache-2.10.6.jar:2.10.6]
80 at net.sf.ehcache.store.disk.DiskStorageFactory$PersistentDiskWriteTask.call(DiskStorageFactory.java:1071) [ehcache-2.10.6.jar:2.10.6]
81 at net.sf.ehcache.store.disk.DiskStorageFactory$IndexWriteTask.call(DiskStorageFactory.java:1108) [ehcache-2.10.6.jar:2.10.6]
82 at net.sf.ehcache.store.disk.DiskStorageFactory.unbind(DiskStorageFactory.java:921) [ehcache-2.10.6.jar:2.10.6]
83 at net.sf.ehcache.store.disk.DiskStore.dispose(DiskStore.java:664) [ehcache-2.10.6.jar:2.10.6]
84 at net.sf.ehcache.store.CacheStore.dispose(CacheStore.java:342) [ehcache-2.10.6.jar:2.10.6]
85 at net.sf.ehcache.Cache.dispose(Cache.java:2582) [ehcache-2.10.6.jar:2.10.6]
86 at net.sf.ehcache.CacheManager.shutdown(CacheManager.java:1552) [ehcache-2.10.6.jar:2.10.6]
87 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
88 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
89 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
90 at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
91 at org.springframework.beans.factory.support.DisposableBeanAdapter.invokeCustomDestroyMethod(DisposableBeanAdapter.java:339) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
92 at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:273) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
93 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:571) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
94 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:543) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
95 at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1075) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
96 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:504) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
97 at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1068) [spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
98 at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1060) [spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
99 at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1029) [spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
100 at org.springframework.context.support.AbstractApplicationContext$1.run(AbstractApplicationContext.java:948) [spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
101
102
103 Process finished with exit code 0
效果,如下所示,一次查询,第二次查询的话,就可以直接从缓存中取出。
@Cacheable作用:把方法的返回值添加到Ehcache中做缓存。
Value属性:指定一个Ehcache配置文件中的缓存策略,如果没有给定value,name则表示使用默认的缓存策略。 Key属性:给存储的值起个名称。在查询时如果有名称相同的,那么则知己从缓存中将数据返回。
1 package com.bie.springboot.service.impl;
2
3 import com.bie.springboot.dao.UsersRepository;
4 import com.bie.springboot.po.Users;
5 import com.bie.springboot.service.UsersService;
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.cache.annotation.Cacheable;
8 import org.springframework.data.domain.Example;
9 import org.springframework.data.domain.Page;
10 import org.springframework.data.domain.Pageable;
11 import org.springframework.stereotype.Service;
12
13 import java.util.List;
14
15 @Service
16 public class UsersServiceImpl implements UsersService {
17
18 // 注入usersRepository
19 @Autowired
20 private UsersRepository usersRepository;
21
22 @Override
23 public List<Users> findUserAll() {
24 return this.usersRepository.findAll();
25 }
26
27 @Override
28 //@Cacheable:对当前查询的对象做缓存处理,value的值是自定义缓存策略的名称
29 @Cacheable(value = "users")
30 public Users findUsersById(Integer id) {
31 Users users = new Users();
32 users.setId(id);
33 Example<Users> example = Example.of(users);
34 return this.usersRepository.findOne(example).get();
35 }
36
37 @Override
38 // 默认使用pageable作为缓存对象的key,如key = "#pageable"
39 // 这里修改为每页显示多少条作为缓存的key,如果改变从数据库查询。
40 @Cacheable(value = "users", key = "#pageable.pageSize")
41 public Page<Users> findUserByPage(Pageable pageable) {
42 return this.usersRepository.findAll(pageable);
43 }
44
45 @Override
46 public void saveUers(Users users) {
47 this.usersRepository.save(users);
48 }
49
50 }
测试代码,如下所示:
1 package com.bie.springboot.springbootredis;
2
3 import com.bie.springboot.SpringbootRedisApplication;
4 import com.bie.springboot.service.UsersService;
5 import org.junit.jupiter.api.Test;
6 import org.junit.runner.RunWith;
7 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.boot.test.context.SpringBootTest;
9 import org.springframework.data.domain.PageRequest;
10 import org.springframework.data.domain.Sort;
11 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
12
13 import java.util.ArrayList;
14 import java.util.List;
15
16 @RunWith(SpringJUnit4ClassRunner.class)
17 @SpringBootTest(classes = SpringbootRedisApplication.class)
18 class SpringbootRedisApplicationTests {
19
20 @Autowired
21 private UsersService usersService;
22
23 @Test
24 public void testFindUserById() {
25 //第一次查询
26 System.out.println("-------------------------------------" + this.usersService.findUsersById(1));
27 //第二次查询
28 System.out.println("-------------------------------------" + this.usersService.findUsersById(1));
29 }
30
31 @Test
32 public void testFindUserByPage() {
33 Sort.Order order1 = new Sort.Order(Sort.Direction.ASC, "id");
34 Sort.Order order2 = new Sort.Order(Sort.Direction.DESC, "age");
35 List<Sort.Order> list = new ArrayList<>();
36 list.add(order1);
37 list.add(order2);
38 Sort sort = Sort.by(list);
39 int page = 0;
40 int pageSize = 20;
41 PageRequest pageRequest = PageRequest.of(page, pageSize, sort);
42 // PageRequest pageRequest2 = PageRequest.of(page, pageSize, Sort.by(list));
43 // PageRequest pageRequest3 = PageRequest.of(page, pageSize, Sort.by(order1, order2));
44 // Page<Users> userByPage = this.usersService.findUserByPage(pageRequest);
45
46 // 第一次查询
47 System.out.println(this.usersService.findUserByPage(pageRequest).getTotalElements());
48 // 第二次查询,第一次查询将对象的key放到缓存中,第二次根据这个key直接缓存中查询。
49 System.out.println(this.usersService.findUserByPage(pageRequest).getTotalElements());
50
51 // 第三次查询,此时传递的pageRequest对象改变了,不走缓存了,从数据库查询。
52 pageRequest = PageRequest.of(1, 20, sort);
53 System.out.println(this.usersService.findUserByPage(pageRequest).getTotalElements());
54 }
55
56 }
@CacheEvict作用:清除缓存。如何使用呢,可以这样使用,如果执行插入操作了,你再次执行做了缓存的查询操作,那么操作查询是从缓存中查询的,就造成了数据不一致状况,那么需要插入操作之后进行清空缓存,再进行查询即可。
使用效果如下所示:
1 package com.bie.springboot.service.impl;
2
3 import com.bie.springboot.dao.UsersRepository;
4 import com.bie.springboot.po.Users;
5 import com.bie.springboot.service.UsersService;
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.cache.annotation.CacheEvict;
8 import org.springframework.cache.annotation.Cacheable;
9 import org.springframework.data.domain.Example;
10 import org.springframework.data.domain.Page;
11 import org.springframework.data.domain.Pageable;
12 import org.springframework.stereotype.Service;
13
14 import java.util.List;
15
16 @Service
17 public class UsersServiceImpl implements UsersService {
18
19 // 注入usersRepository
20 @Autowired
21 private UsersRepository usersRepository;
22
23 @Override
24 @Cacheable(value = "users")
25 public List<Users> findUserAll() {
26 return this.usersRepository.findAll();
27 }
28
29 @Override
30 //@Cacheable:对当前查询的对象做缓存处理,value的值是自定义缓存策略的名称
31 @Cacheable(value = "users")
32 public Users findUsersById(Integer id) {
33 Users users = new Users();
34 users.setId(id);
35 Example<Users> example = Example.of(users);
36 return this.usersRepository.findOne(example).get();
37 }
38
39 @Override
40 // 默认使用pageable作为缓存对象的key,如key = "#pageable"
41 // 这里修改为每页显示多少条作为缓存的key,如果改变从数据库查询。
42 @Cacheable(value = "users", key = "#pageable.pageSize")
43 public Page<Users> findUserByPage(Pageable pageable) {
44 return this.usersRepository.findAll(pageable);
45 }
46
47 @Override
48 // @CacheEvict(value="users",allEntries=true)清除缓存中以users缓存策略缓存的对象。
49 @CacheEvict(value = "users", allEntries = true)
50 public void saveUers(Users users) {
51 this.usersRepository.save(users);
52 }
53
54 }
测试代码,如下所示:
1 package com.bie.springboot.springbootredis;
2
3 import com.bie.springboot.SpringbootRedisApplication;
4 import com.bie.springboot.po.Users;
5 import com.bie.springboot.service.UsersService;
6 import org.junit.jupiter.api.Test;
7 import org.junit.runner.RunWith;
8 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.boot.test.context.SpringBootTest;
10 import org.springframework.data.domain.PageRequest;
11 import org.springframework.data.domain.Sort;
12 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
13
14 import java.util.ArrayList;
15 import java.util.List;
16
17 @RunWith(SpringJUnit4ClassRunner.class)
18 @SpringBootTest(classes = SpringbootRedisApplication.class)
19 class SpringbootRedisApplicationTests {
20
21 @Autowired
22 private UsersService usersService;
23
24 @Test
25 public void testFindUserById() {
26 //第一次查询
27 System.out.println("-------------------------------------" + this.usersService.findUsersById(1));
28 //第二次查询
29 System.out.println("-------------------------------------" + this.usersService.findUsersById(1));
30 }
31
32 @Test
33 public void testFindUserByPage() {
34 Sort.Order order1 = new Sort.Order(Sort.Direction.ASC, "id");
35 Sort.Order order2 = new Sort.Order(Sort.Direction.DESC, "age");
36 List<Sort.Order> list = new ArrayList<>();
37 list.add(order1);
38 list.add(order2);
39 Sort sort = Sort.by(list);
40 int page = 0;
41 int pageSize = 20;
42 PageRequest pageRequest = PageRequest.of(page, pageSize, sort);
43 // PageRequest pageRequest2 = PageRequest.of(page, pageSize, Sort.by(list));
44 // PageRequest pageRequest3 = PageRequest.of(page, pageSize, Sort.by(order1, order2));
45 // Page<Users> userByPage = this.usersService.findUserByPage(pageRequest);
46
47 // 第一次查询
48 System.out.println(this.usersService.findUserByPage(pageRequest).getTotalElements());
49 // 第二次查询,第一次查询将对象的key放到缓存中,第二次根据这个key直接缓存中查询。
50 System.out.println(this.usersService.findUserByPage(pageRequest).getTotalElements());
51
52 // 第三次查询,此时传递的pageRequest对象改变了,不走缓存了,从数据库查询。
53 pageRequest = PageRequest.of(1, 20, sort);
54 System.out.println(this.usersService.findUserByPage(pageRequest).getTotalElements());
55 }
56
57 @Test
58 public void testSaveUsers() {
59 // 第一次查询
60 System.out.println(this.usersService.findUserAll().size());
61 Users users = new Users();
62 users.setName("哈哈哈");
63 users.setAge(24);
64 this.usersService.saveUers(users);
65 // 第二次查询
66 System.out.println(this.usersService.findUserAll().size());
67 }
68
69 }