javascript
ehcache springboot_Spring Boot应用缓存实践之:Ehcache加持
1、Spring也引入了對 Cache的支持,那對于如今發展得如火如荼的 Spring Boot來說自然也是支持緩存特性的。當然 Spring Boot默認使用的是 SimpleCacheConfiguration,即使用ConcurrentMapCacheManager 來實現的緩存。但本文將講述如何將 Ehcache緩存應用到Spring Boot應用中。
2、整合步驟:
(1) 準備好數據庫(mysql)
(2) 搭建工程:Springboot + MyBatis + MySQL + Ehcache
pom.xml文件
<dependencies><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><!--for mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><!--for Mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- Spring boot Cache--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><!--for ehcache--><dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId></dependency></dependencies>(3) 建立 Ehcache配置文件
創建Ehcache的配置文件 ehcache.xml并置于項目 classpath下:
<?xml version="1.0" encoding="UTF-8"?> <ehcache><diskStore path="java.io.tmpdir"/><!-- 設定緩存的默認數據過期策略 --><defaultCachemaxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"overflowToDisk="true"maxElementsOnDisk="10000000"diskPersistent="false"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"/><cache name="user"maxElementsInMemory="1000"eternal="false"timeToIdleSeconds="10"/></ehcache>(4) 配置 application.properties
server.port=80# Mysql 數據源配置 spring.datasource.url=jdbc:mysql://121.196.213.251:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password=xxxxxx spring.datasource.driver-class-name=com.mysql.jdbc.Driver# mybatis 配置 mybatis.type-aliases-package=cn.codesheep.springbt_ehcache.entity mybatis.mapper-locations=classpath:mapper/*.xml mybatis.configuration.map-underscore-to-camel-case=true# ehcache 配置 spring.cache.ehcache.config=classpath:ehcache.xml(5) 編寫操作數據庫和 Ehcache緩存的業務代碼
public class User {private Long userId;private String userName;private Integer userAge;public Long getUserId() {return userId;}public void setUserId(Long userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public Integer getUserAge() {return userAge;}public void setUserAge(Integer userAge) {this.userAge = userAge;} }(6) 編寫mapper
public interface UserMapper {List<User> getUsers();int addUser(User user);List<User> getUsersByName( String userName ); }(7) 編寫service
@Service public class UserService {@Autowiredprivate UserMapper userMapper;public List<User> getUsers() {return userMapper.getUsers();}public int addUser( User user ) {return userMapper.addUser(user);}@Cacheable(value = "user", key = "#userName")public List<User> getUsersByName( String userName ) {List<User> users = userMapper.getUsersByName( userName );System.out.println( "從數據庫讀取,而非讀取緩存!" );return users;} }看得很明白了,我們在getUsersByName接口上添加了注解:@Cacheable。這是 Ehcache的使用注解之一,除此之外常用的還有@CachePut和@CacheEvit,分別簡單介紹一下:
(8) 編寫controller
@RestController public class UserController {@Autowiredprivate UserService userService;@AutowiredCacheManager cacheManager;@GetMapping("/users")public List<User> getUsers() {return userService.getUsers();}@GetMapping("/adduser")public int addSser() {User user = new User();user.setUserId(4l);user.setUserName("趙四");user.setUserAge(38);return userService.addUser(user);}@RequestMapping( value = "/getusersbyname", method = RequestMethod.POST)public List<User> geUsersByName( @RequestBody User user ) {System.out.println( "-------------------------------------------" );System.out.println("call /getusersbyname");System.out.println(cacheManager.toString());List<User> users = userService.getUsersByName( user.getUserName() );return users;}}(9) 改造SpringBoot應用主類
@SpringBootApplication @MapperScan("cn.codesheep.springbt_ehcache") @EnableCaching public class SpringbtEhcacheApplication {public static void main(String[] args) {SpringApplication.run(SpringbtEhcacheApplication.class, args);} }(10) 實際實驗
通過多次向接口localhost/getusersbynamePOST數據來觀察效果:
可以看到緩存的啟用和失效時的效果(上文ehcache的配置文件中設置了緩存user的實效時間為10s):
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的ehcache springboot_Spring Boot应用缓存实践之:Ehcache加持的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qt如何用python结合_在Qt(C+
- 下一篇: python怎么从键盘输入两个数然后求和