首先說明一下,這裏使用的是Springboot2.2.6.RELEASE版本,因爲Springboot迭代很快,因此要注意版本問題。java
一、SpringBoot整合Ehcache,修改pom文件,添加緩存支持啓動器,和Ehcache緩存依賴jar包。
mysql
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。web
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去緩存處理。redis
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在啓動的時候對緩存進行額外的啓動。spring
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 }
建立實體類,以下所示:sql
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 }
建立業務交互層的接口,和業務交互層的實現類,以下所示:express
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 }
開始測試,使用測試類測試緩存的使用,嗯,各類炸裂報錯。apache
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的版本。api
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 }