导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.6</version>
</dependency>
</dependencies>
在resources目录下创建ehcache.xml文件
<ehcache>
<diskStore path="java.io.tmpdir/shiro-spring-sample"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="false"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
/>
<cache name="user"
maxElementsInMemory="10000"
eternal="true"
overflowToDisk="true"
diskPersistent="true"
diskExpiryThreadIntervalSeconds="600"/>
</ehcache>
在启动类中开启缓存
package org.hx.springboot_elcache_demo43;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
@SpringBootApplication
@EnableCaching
public class SpringbootElcacheDemo43Application {
public static void main(String[] args) {
SpringApplication.run(SpringbootElcacheDemo43Application.class, args);
}
}
在model包下创建User类
package org.hx.springboot_elcache_demo43.model;
import java.io.Serializable;
public class User implements Serializable {
private Integer id;
private String username;
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
在Service包下创建UserService类
package org.hx.springboot_elcache_demo43.Service;
import org.hx.springboot_elcache_demo43.model.User;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Cacheable(cacheNames = "user")
public User getUserById(Integer id){
System.out.println("id = "+id);
User user = new User();
user.setId(id);
user.setUsername("hx");
return user;
}
}
在测试类中进行测试
package org.hx.springboot_elcache_demo43;
import org.hx.springboot_elcache_demo43.Service.UserService;
import org.hx.springboot_elcache_demo43.model.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SpringbootElcacheDemo43ApplicationTests {
@Autowired
UserService userService;
@Test
void contextLoads() {
User u1 = userService.getUserById(100);
User u2 = userService.getUserById(100);
User u3 = userService.getUserById(101);
}
}