婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 從零搭建SpringBoot2.X整合Redis框架的詳細教程

從零搭建SpringBoot2.X整合Redis框架的詳細教程

熱門標簽:日本中國地圖標注 貴州電銷卡外呼系統 鄭州人工智能電銷機器人系統 十堰營銷電銷機器人哪家便宜 魔獸2青云地圖標注 超呼電話機器人 北京400電話辦理收費標準 山東外呼銷售系統招商 宿遷便宜外呼系統平臺

最近也不知道寫啥,看之前寫過Kafka整合Springboot的文章,大家反響還挺熱烈的,嘿嘿嘿,就感覺幫助到大家了還挺好的,也算是達到了自己的目的,正好,今天業務模塊是springboot整合redis,因為之前做過,所以有現成的代碼,cv一下之后就可以了,所以時間比較多,那就給大家整理一下Springboot整合Redis的代碼實現吧,從項目搭建到源碼實現,下面全都有,耐心看完,相信會對你有所幫助的

好了,話不多說,我們開始吧,同樣的,還是建議能夠自己在自己的PC端實現一下
個人公眾號:Java架構師聯盟,每日更新技術好文

一、使用Spring Initializr創建項目web項目

1、File→New→Project

2、點擊Next如圖所示,命名好Group和Artifact

3、Next后如圖所示,勾選中需要的依賴,Spring Initializr會自動導入所需的starter

4、創建項目成功后,pom.xml文件中的依賴如下

?xml version="1.0" encoding="UTF-8"?>
project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	modelVersion>4.0.0/modelVersion>
	parent>
		groupId>org.springframework.boot/groupId>
		artifactId>spring-boot-starter-parent/artifactId>
		version>2.2.2.RELEASE/version>
		relativePath/> !-- lookup parent from repository -->
	/parent>
	groupId>com.heny/groupId>
	artifactId>spring-boot-redis/artifactId>
	version>0.0.1-SNAPSHOT/version>
	name>spring-boot-redis/name>
	description>Demo project for Spring Boot/description>

	properties>
		java.version>1.8/java.version>
	/properties>

	dependencies>
		dependency>
			groupId>org.springframework.boot/groupId>
			artifactId>spring-boot-starter-web/artifactId>
		/dependency>
		dependency>
			groupId>org.mybatis.spring.boot/groupId>
			artifactId>mybatis-spring-boot-starter/artifactId>
			version>2.1.1/version>
		/dependency>

		dependency>
			groupId>mysql/groupId>
			artifactId>mysql-connector-java/artifactId>
			scope>runtime/scope>
		/dependency>
		dependency>
			groupId>org.springframework.boot/groupId>
			artifactId>spring-boot-starter-test/artifactId>
			scope>test/scope>
			exclusions>
				exclusion>
					groupId>org.junit.vintage/groupId>
					artifactId>junit-vintage-engine/artifactId>
				/exclusion>
			/exclusions>
		/dependency>
	/dependencies>

	build>
		plugins>
			plugin>
				groupId>org.springframework.boot/groupId>
				artifactId>spring-boot-maven-plugin/artifactId>
			/plugin>
		/plugins>
	/build>

/project>

5、在pom.xml文件中添加redis的starter

dependency>
		groupId>org.springframework.boot/groupId>
		artifactId>spring-boot-starter-data-redis/artifactId>
	/dependency>

6、創建JavaBean用于封裝數據庫數據,需要實現Serializable

package com.henya.springboot.bean;

import java.io.Serializable;

public class Employee implements Serializable{
	
	private Integer id;
	private String lastName;
	private String email;
	private Integer gender; //性別 1男 0女
	private Integer dId;
	
	
	public Employee() {
		super();
	}

	
	public Employee(Integer id, String lastName, String email, Integer gender, Integer dId) {
		super();
		this.id = id;
		this.lastName = lastName;
		this.email = email;
		this.gender = gender;
		this.dId = dId;
	}
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Integer getGender() {
		return gender;
	}
	public void setGender(Integer gender) {
		this.gender = gender;
	}
	public Integer getdId() {
		return dId;
	}
	public void setdId(Integer dId) {
		this.dId = dId;
	}
	@Override
	public String toString() {
		return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + ", dId="
				+ dId + "]";
	}
}

注意:
在寫JavaBean對象時需要實現Serializable接口否則會報以下錯誤:

Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException

7、整合Mybatis操作數據庫,在application.properties配置文件中配置數據源信息

#serverTimezone用于指定時區,不然會報錯
spring.datasource.url=jdbc:mysql://localhost:3306/cache?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456

# 開啟駝峰命名法規則
mybatis.configuration.map-underscore-to-camel-case=true
#日志級別
logging.level.com.henya.springboot.mapper=debug

8、使用注解版Mybatis創建Mapper

package com.henya.springboot.mapper;


import com.henya.springboot.bean.Employee;
import org.apache.ibatis.annotations.*;

@Mapper
public interface EmployeeMapper {

 @Select("SELECT * FROM employee WHERE id=#{id}")
 public Employee getEmpById(Integer id);

 @Update("UPDATE employee SET lastName=#{lastName},email=#{email},gender=#{gender},d_id=#{dId} WHERE id=#{id}")
 public void updateEmp(Employee employee);

 @Delete("DELETE FROM emlpoyee WHERE id=#{id}")
 public void delEmpById(Integer id);

 @Insert("INSERT INTO employee(lastName, email, gender, d_id) VALUES (#{lastName}, #{email}, #{gender}, #{dId})")
 public Employee insertEmp(Employee employee);

 @Select("SELECT * FROM employee WHERE lastName=#{lastName}")
 public Employee getEmpByLastName(String lastName);
}

注意:
需要使用使用@MapperScan注解掃描Mapper所在的接口,只需要加在主程序類上即可。除此之外,還要使用@EnableCaching用于開啟緩存。

@MapperScan("com.henya.springboot.mapper")
@SpringBootApplication
@EnableCaching //開啟緩存
public class SpringBootRedisApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringBootRedisApplication.class, args);
	}
}

9、編寫Service類,用于訪問數據庫或redis緩存

package com.henya.springboot.service;
import com.henya.springboot.bean.Employee;
import com.henya.springboot.mapper.EmployeeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.*;
import org.springframework.stereotype.Service;

@CacheConfig(cacheNames = "emp") //抽取緩存的公共配置
@Service
public class EmployeeService {
 @Autowired
 EmployeeMapper employeeMapper;

 /**
 * @param id
 * @return
 */
 @Cacheable(cacheNames = {"emp"},keyGenerator = "myKeyGenerator")
 public Employee getEmpById(Integer id) {
 System.err.println("開始查詢"+ id +"號員工");
 Employee employee = employeeMapper.getEmpById(id);
 return employee;
 }

 /**
 * @CachePut:既調用方法(這個方法必須要執行),又更新緩存數據
 * @param employee
 * @return
 */
 @CachePut(value = "emp",key = "#result.id")
 public Employee updateEmp(Employee employee){
 System.err.println("開始更新" + employee.getId() + "號員工");
 employeeMapper.updateEmp(employee);
 return employee;
 }

 /**
 * @CacheEvict:緩存清除
 * @param id
 */
 @CacheEvict(value = "emp",beforeInvocation = true)
 public void deleteEmp(Integer id){
 System.err.println("刪除" + id + "員工");
 int i = 10/0;
 }

10、編寫Controller類

package com.henya.springboot.controller;


import com.henya.springboot.bean.Employee;
import com.henya.springboot.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Description:
 * @Author:HenYa
 * @CreatTime:2019/12/1 12:44
 */
@RestController
public class EmployeeController {
 @Autowired
 EmployeeService employeeService;

 @GetMapping("/emp/{id}")
 public Employee getEmpById(@PathVariable("id") Integer id){
 Employee employee = employeeService.getEmpById(id);
 return employee;
 }

 @GetMapping("/emp")
 public Employee updateEmp(Employee employee){
 Employee emp = employeeService.updateEmp(employee);
 return emp;
 }
}

二、測試SpringBoot整合Redis是否成功

1、在瀏覽器訪問,也可以使用測試類,筆者使用了瀏覽器訪問http://localhost:8080/emp/1進行測試,初次訪問時,控制臺會提示開始查詢1號員工,如圖所示。

2、再次訪問時,控制臺并沒有sql日志,如圖所示。

3、此時使用RedisDesktopManager工具查看redis時有數據,并且cacheName為emp,如圖所示

只是emp對象被序列化了。查看源碼可知Redis默認使用Jdk進行序列化。

static RedisSerializerObject> java(@Nullable ClassLoader classLoader) {
 return new JdkSerializationRedisSerializer(classLoader);
 }

查看RedisSerializer接口的實現有以下幾種:

我們常用的就是以json的格式進行序列化。但是需要自定義RedisCacheManager。

三、自定義RedisCacheManager

package com.henya.springboot.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.cache.RedisCacheWriter;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;

/**
 * @Description:
 * @Author:HenYa
 * @CreatTime:2019/12/6 20:50
 */
@Configuration
public class MyRedisConfig {
 @Bean
 public RedisCacheManager empCacheManager(RedisConnectionFactory redisConnectionFactory){
 //RedisCacheManager redisCacheManager = new RedisCacheManager(redisConnectionFactory);
 RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);

 RedisSerializerObject> redisSerializer = new GenericJackson2JsonRedisSerializer();

 RedisSerializationContext.SerializationPairObject> pair = RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer);
 RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(pair);
 // 默認會將CacheName作為key的前綴
 return new RedisCacheManager(redisCacheWriter, redisCacheConfiguration);
 }
 }

此時,Redis中緩存數據就以Json的格式進行序列化,如圖所示。

到此這篇關于從零搭建SpringBoot2.X整合Redis框架的詳細教程的文章就介紹到這了,更多相關SpringBoot2.X整合Redis框架內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Springboot使用redis進行api防刷限流過程詳解
  • Redis 緩存實現存儲和讀取歷史搜索關鍵字的操作方法
  • redis分布式鎖的go-redis實現方法詳解
  • Asp.net core中RedisMQ的簡單應用實現
  • docker安裝redis設置密碼并連接的操作
  • Windows下如何安裝配置Redis環境
  • Redis六大數據類型使用方法詳解
  • Redis Java Lettuce驅動框架原理解析
  • RedisAPI原子性操作及原理解析

標簽:大慶 江蘇 果洛 楊凌 臺州 吉安 北京 朝陽

巨人網絡通訊聲明:本文標題《從零搭建SpringBoot2.X整合Redis框架的詳細教程》,本文關鍵詞  從,零,搭建,SpringBoot2.X,整合,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《從零搭建SpringBoot2.X整合Redis框架的詳細教程》相關的同類信息!
  • 本頁收集關于從零搭建SpringBoot2.X整合Redis框架的詳細教程的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品理论电影在线| 91精品国产福利| 中文字幕视频一区| 日韩你懂的在线播放| youjizz国产精品| 国产美女精品人人做人人爽| 亚洲精品国产成人久久av盗摄| 国产亚洲一区二区三区四区| 在线播放亚洲一区| 欧美欧美欧美欧美| 欧美日韩在线直播| 在线观看视频91| 欧美在线色视频| 欧洲亚洲国产日韩| 欧美日韩在线不卡| 欧美男人的天堂一二区| 欧美日韩一级大片网址| 欧美精品久久一区二区三区| 欧美久久高跟鞋激| 91麻豆精品国产自产在线观看一区| 在线观看一区不卡| 91免费看片在线观看| 972aa.com艺术欧美| 色婷婷av久久久久久久| 欧美在线一区二区三区| 欧美情侣在线播放| 日韩欧美中文字幕公布| 久久免费国产精品| 亚洲国产成人午夜在线一区| 中文字幕高清不卡| 一区二区三区久久| 老司机精品视频在线| 国产高清在线观看免费不卡| 99这里都是精品| 欧美性猛片xxxx免费看久爱| 91麻豆精品国产91久久久使用方法 | 国产精品一区二区三区99| 久久精品视频网| 精品国产污网站| 欧美久久久久免费| 日韩精品一区二区三区四区| 欧美变态凌虐bdsm| 国产欧美日韩在线| 亚洲免费大片在线观看| 香蕉加勒比综合久久| 理论电影国产精品| 99在线精品观看| 欧美丰满美乳xxx高潮www| 精品国产亚洲在线| 亚洲色图20p| 婷婷中文字幕综合| 国产成人啪免费观看软件| 色先锋久久av资源部| 欧美成人国产一区二区| 国产自产v一区二区三区c| 在线播放/欧美激情| 日韩欧美国产三级| 国产清纯白嫩初高生在线观看91| 亚洲天堂精品视频| 蜜臀久久久久久久| 不卡一区二区三区四区| 欧美乱妇一区二区三区不卡视频| 久久久久久久久久看片| 亚洲一二三专区| 国产麻豆成人精品| 制服丝袜av成人在线看| 国产精品丝袜在线| 狠狠狠色丁香婷婷综合久久五月| 91成人网在线| 中文字幕永久在线不卡| 国产伦精品一区二区三区在线观看| 99免费精品视频| 一本色道久久综合精品竹菊| 日韩欧美国产电影| 水蜜桃久久夜色精品一区的特点| 国产91综合网| 精品处破学生在线二十三| 亚洲图片自拍偷拍| 91美女精品福利| 国产精品久久二区二区| 国产91在线观看| 久久精品亚洲国产奇米99| 免费的成人av| 欧美一区二区视频在线观看| 亚洲午夜精品网| 欧美日韩亚洲不卡| 亚洲成人激情av| 欧美性一区二区| 亚洲成人午夜电影| 51午夜精品国产| 首页亚洲欧美制服丝腿| 51久久夜色精品国产麻豆| 日本欧美久久久久免费播放网| 91精品国模一区二区三区| 午夜免费久久看| 日韩丝袜美女视频| 久久国产精品区| 日韩精彩视频在线观看| 欧美日韩视频专区在线播放| 国产精品护士白丝一区av| 国产成人午夜精品5599| 亚洲特黄一级片| 91免费看视频| 亚洲一区国产视频| 3d动漫精品啪啪一区二区竹菊| 天天射综合影视| 精品卡一卡二卡三卡四在线| 国内久久婷婷综合| 久久精品一区二区三区不卡| 国产成人免费在线视频| ●精品国产综合乱码久久久久| 91浏览器在线视频| 日韩中文欧美在线| 久久久精品tv| 91麻豆国产福利在线观看| 亚洲一区二区三区爽爽爽爽爽| 欧美综合色免费| 亚洲国产精品久久人人爱蜜臀| 久久久一区二区| 蜜臀av性久久久久av蜜臀妖精| 成人黄色在线看| 国产偷国产偷精品高清尤物| 精品理论电影在线观看| av爱爱亚洲一区| 久久久久久久久久久电影| 欧美日韩视频在线一区二区| 亚洲一区二区三区激情| 欧美日韩国产综合视频在线观看| 亚洲男同性恋视频| 91精品免费在线观看| 激情小说欧美图片| 亚洲天堂免费看| 日韩欧美在线观看一区二区三区| 国产精品一区二区在线播放| 一区二区三区在线视频播放| 欧美成人欧美edvon| 在线视频国内自拍亚洲视频| 九色porny丨国产精品| 自拍偷自拍亚洲精品播放| 777久久久精品| 91视频国产资源| 国产一区二区福利| 日日摸夜夜添夜夜添国产精品 | 欧美激情一区二区三区不卡| 色一情一乱一乱一91av| 国模少妇一区二区三区| 亚洲图片欧美一区| 欧美精品一区视频| 国产一区二区三区美女| 亚洲欧洲精品成人久久奇米网| 欧美裸体bbwbbwbbw| 国产精品一二三四| 日本不卡1234视频| 一区二区三区产品免费精品久久75| 日韩女优制服丝袜电影| 欧美亚洲另类激情小说| 风间由美性色一区二区三区| 青青草97国产精品免费观看| 国内成人精品2018免费看| 国产精品久久久久一区| 成人激情电影免费在线观看| 蜜桃一区二区三区四区| 一区二区三区在线观看视频| 久久无码av三级| 欧美日韩国产小视频| 亚洲成人av一区| 国产亚洲精品aa午夜观看| 国产精品自产自拍| 亚洲精品乱码久久久久久黑人 | 亚洲h动漫在线| 欧美精品v国产精品v日韩精品| 亚洲欧美激情小说另类| 亚洲精品一区二区三区香蕉| 97se亚洲国产综合自在线| 美女精品一区二区| 日日噜噜夜夜狠狠视频欧美人| 亚洲一区在线免费观看| 亚洲自拍另类综合| 一区二区免费视频| 亚洲最色的网站| 一区二区三区电影在线播| 亚洲精品免费播放| 亚洲第一狼人社区| 五月综合激情日本mⅴ| 视频一区二区中文字幕| 日日摸夜夜添夜夜添国产精品| 日本aⅴ精品一区二区三区| 琪琪一区二区三区| 美女爽到高潮91| 国产精品自拍在线| 一本久久精品一区二区| 欧美色视频一区| 欧美一级视频精品观看| 日韩视频一区在线观看| 精品久久久久一区| 国产精品国产三级国产a| 一区二区三国产精华液| 日韩av一区二区三区四区| 精品一区二区三区免费视频| 大陆成人av片|