999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SpringBoot項目中EhCache緩存技術的實現

2021-12-24 23:07:56王萍
電腦知識與技術 2021年29期
關鍵詞:進程數據庫方法

王萍

摘要:從本質上看,EhCache是一個緩存管理器,不僅可以和Hibernate配合實現緩存,也可以和其他框架比如spring boot結合,作為一個緩存管理器,該文這里舉一個例子,來論述SpringBoot項目中EhCache緩存技術的實現過程,以“spring boot + mybatis + EhCache”實現本地緩存為例,探討了SpringBoot項目中EhCache緩存技術的實現。

關鍵詞:SpringBoot項目;EhCache;緩存技術

中圖分類號:TP311? 文獻標識碼:A

文章編號:1009-3044(2021)29-0079-03

1概述

1.1 SpringBoot

SpringBoot是由Pivotal 團隊提供的全新框架,其設計目的是用來簡化新 Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,SpringBoot在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。

簡而言之,SpringBoot是當前 web 開發主流,其簡化了 Spring 的配置讓開發者能夠更容易上手Web項目的開發。由于Spring 的發展、微服務的發展使得SpringBoot越來越流行,已經成為JavaWeb開發的主流框架。

1.2 Spring Boot的緩存機制

SpringBoot高速緩存抽象不提供實際存儲,且依賴于由org. springframework.cache.Cache和org.springframework.cache.Cache? Manager接口實現的抽象。 Spring Boot根據自動配置實現合適的CacheManager,只要緩存支持通過@EnableCaching 注釋啟用即可。

1.3 EhCache

EhCache是一個開源的基于標準的緩存,是一個純Java 的在進程中的緩存,可提高性能,減輕數據庫負載并簡化可伸縮性。它是使用最廣泛的基于Java 的高速緩存,功能全面,并且與其他流行的庫和框架集成在一起。EhCache從進程內緩存擴展到混合進程內/進程外部署與TB級緩存。EhCache是一個快速的、輕量級的、易于使用的、進程內的緩存。它支持read-on?ly和 read/write 緩存,內存和磁盤緩存。是一個非常輕量級的緩存實現,并支持集群。

現在的EhCache已經更新到了3.9版本,版本3加入一些新的功能,包括:1)改進了API,可以利用Java泛型并簡化緩存交互;2)與javax.cache API(JSR-107)完全兼容;3)Offheap存儲功能,包括僅堆外高速緩存;4)Spring Caching 和Hibernate集成得益于javax.cache支持。

1.4 Springboot整合EhCache的步驟

主要是:添加 pom 文件 maven 依賴——配置 ehcache.xml ——開啟緩存支持——在項目中使用。

2方法

下面這個例子是一個springboot工程項目,集成了mybatis來進行數據庫的訪問,只是一個簡單的數據庫表操作,在具體的方法上添加了相應的注解,從而實現了本地緩存。沒有用到EhCache集群和分布式,只是將信息緩存到內存中,從而降低數據庫之間的訪問,提高數據的訪問速度。

核心的代碼主要如下:

1)SpringCacheApplication啟動類

package com.example.ehcache;

import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication;

import org. springframework. boot. autoconfigure. EnableAuto? Configuration;

import org.springframework.boot.autoconfigure.SpringBootAp? plication;

import org. springframework. boot. autoconfigure. jdbc. Data?SourceAutoConfiguration;

import org.springframework.cache.annotation.EnableCaching;

import org.springframework.cloud.client.discovery.EnableDis?coveryClient;

import org.springframework.cloud.config.server.EnableConfig? Server;

/**

*數據庫集成Mybatis、EhCache框架采用 Mapper 訪問數據庫。

*/

@EnableDiscoveryClient

@SpringBootApplication

@EnableCaching

public class SpringCacheApplication {

public static void main(String[] args){

SpringApplication. run(SpringCacheApplication. class,

args);

System.out.println("MysqlMybatisMapperEhCache數據庫微服務已啟動.");

}

}

如果想用EhCache緩存,在啟動類上一定要加上@Enable? Caching注解,否則緩存會不起作用。

2)UserServiceImpl實現類

package com.example.ehcache.service.impl;??? import com.github.pagehelper.util.StringUtil;??? import com.example.Ehcache.common.model.User; import com.example.ehcache.common.util.Result;

import com.example.ehcache.provider.dao.UserDao;??? import com.example.ehcache.provider.service.UserService; import com.mysql.jdbc.StringUtils;

import com.sun.org.apache.regexp.internal.RE;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CachePut;? import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service;

import org. springframework. transaction. annotation. Transac?tional;

import java.util.List;

@CacheConfig(cacheNames ="UserCache")

@Service

public class UserServiceImpl implements UserService {

private Logger logger = LoggerFactory. getLogger(this. get?Class());

private static final String CACHE_KEY ="'user'";

private static final String CACHE_NAME_B ="user- cache";

@Autowired

private UserDaouserDao;

@CachePut(value =? CACHE_NAME_B,? key =

CACHE_KEY)

@Override

public int insert(User user){

return userDao.insert(user);

}

@CacheEvict(value = CACHE_NAME_B, key ="'user_'+ #id")

@Override

public int deleteByPrimaryKey(String id){

Result result = new Result();

return userDao.deleteByPrimaryKey(id);

}

@CachePut(value = CACHE_NAME_B, key ="'user_'+#us? er.id")

@Traditional

@Override

public User updateByPrimaryKey(User user){

if(userDao.updateByPrimaryKey(user)>0){

user=userDao.selectByPrimaryKey(user.getId());

return user;

}else{

return null;

}

}

@Cacheable(value = CACHE_NAME_B, key ="'user_'+

#id")

@Override

public User selectByPrimaryKey(String id){

return userDao.selectByPrimaryKey(id);

}

@Cacheable

@Override

public List<User>selectAllUser(){

return userDao.selectAllUser();

}

@Cacheable(value = CACHE_NAME_B, key ="#userId+'_'+#userName")

@Override

public Result selectUserByAcount(Integer userId, String userName){

Result result = new Result();

try {

List<User> list = userDao.selectUserByAcount(userId, userName);

if (list.size()==0 || list.isEmpty()){

result.setRetCode(Result.RECODE_ERROR);

result.setErrMsg("查找的數據不存在!");

return result;

}

result.setData(list);

} catch (Exception e){

result.setRetCode(Result.RECODE_ERROR);

result.setErrMsg("方法執行出錯了!");

logger.error("方法執行出錯了!", e);

throw new RuntimeException(e);

}

return result;

}

}

3結論

通過以上的論述,可以看出:1)Springboot整合Encache實現數據緩存時,可以通過注入CacheManager實現緩存內容的查詢和緩存清空;2)可以使用 @Cacheable、@CachePut 和@CacheEvict 實現緩存和緩存清空;3)清空緩存有兩種方式,方式一通過使用cache.clear(),方式二使用@CacheEvict 注解在調用指定方法時清空緩存。

EhCache是一個非常輕量級的緩存實現且支持集群,同時也是hibernate 默認的緩存provider。以上本文只是EhCache對頁面緩存的支持,EhCache的功能遠不止如此,當然要使用好緩存,需對JEE 中緩存的原理、使用范圍、適用場景等都有比較深刻的理解,這樣才能用好緩存、用對緩存。

參考文獻:

[1]王松.SPRING BOOT+VUE全棧開發實戰[M].北京:清華大學出版社,2019.

[2]陳韶健.深入實踐SpringBoot[M].北京:機械工業出版社,2016.

[3]彭志勇.基于Spring Boot技術的天津法院報表分析系統的設計與實現[D].南京:南京大學,2018.

[4]寧方美,賀雪梅,牟晉娟.SpringBoot集成Redis緩存技術在企業一卡通系統中的應用[J].電子技術與軟件工程,2019(24):133-134.

[5]楊家煒. 基于 Spring Boot 的 web 設計與實現[J].輕工科技, 2016,32(7):86-89.

【通聯編輯:張薇】

猜你喜歡
進程數據庫方法
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
數據庫
財經(2017年2期)2017-03-10 14:35:35
可能是方法不對
數據庫
財經(2016年15期)2016-06-03 07:38:02
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
主站蜘蛛池模板: 嫩草国产在线| 免费又黄又爽又猛大片午夜| 九九这里只有精品视频| 国产91线观看| 日韩a级毛片| 在线一级毛片| 久久婷婷色综合老司机| 国产91丝袜在线播放动漫| 国产成人综合网| 呦视频在线一区二区三区| 久久久久亚洲AV成人网站软件| 日本妇乱子伦视频| 亚洲三级成人| 国产精品主播| 色窝窝免费一区二区三区| 国产真实自在自线免费精品| av大片在线无码免费| 在线看AV天堂| 国产精品jizz在线观看软件| 六月婷婷激情综合| 麻豆国产精品视频| 欧美成人看片一区二区三区| 国产微拍一区二区三区四区| 亚洲啪啪网| 国产在线观看一区精品| 免费在线看黄网址| 国产网站一区二区三区| 国产亚洲成AⅤ人片在线观看| 欧美在线综合视频| 久久不卡精品| 依依成人精品无v国产| 中文字幕1区2区| 国产精品七七在线播放| 亚洲欧美国产视频| 99精品国产高清一区二区| 国产免费久久精品99re不卡| 免费无码网站| 免费视频在线2021入口| 天天色天天综合网| 91网址在线播放| 久久中文电影| 亚洲国内精品自在自线官| 秋霞午夜国产精品成人片| 99久久99这里只有免费的精品| 免费看一级毛片波多结衣| 日韩av无码DVD| 中文字幕va| 三级视频中文字幕| 国产草草影院18成年视频| 免费看的一级毛片| 亚洲综合精品第一页| 欧美在线观看不卡| 国产女人在线| 国产欧美专区在线观看| 9啪在线视频| 91成人免费观看| 久久成人免费| 国产在线第二页| 精品自窥自偷在线看| 国产极品粉嫩小泬免费看| 国产91丝袜| 91啦中文字幕| 欧美日韩专区| 青青青亚洲精品国产| 日韩久草视频| 无遮挡一级毛片呦女视频| 亚洲男人天堂2020| 亚洲天堂自拍| 国产女同自拍视频| 日本一区高清| 亚洲日韩Av中文字幕无码| 久草青青在线视频| 在线播放国产99re| 午夜无码一区二区三区| 国内99精品激情视频精品| 亚洲综合二区| 日韩一级二级三级| 久久亚洲精少妇毛片午夜无码| 无码一区二区波多野结衣播放搜索| 久久91精品牛牛| 精品少妇人妻无码久久| 黄色在线不卡|