Spring Boot集成Redis java实现配置
来源:互联网 发布:魅族m9软件 编辑:程序博客网 时间:2024/06/05 15:23
Spring Boot集成Redis实现自动配置
转自:http://blog.csdn.net/a67474506/article/details/52595053
通过上面一些笔记的介绍, 我们可以自己动手去集成Redis, 没有什么难度的
还有Spring Boot官方提供了Spring-Data-Redis的Starter POM
有兴趣的可以查看下这篇资料
http://blog.didispace.com/springbootredis/?utm_source=tuicool&utm_medium=referral
手动集成Redis
pom.xml
[html] view plain copy
- <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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.ibigsea</groupId>
- <artifactId>springboot-redis-demo</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <boot.version>1.3.5.RELEASE</boot.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <version>${boot.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <version>${boot.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>2.8.2</version>
- </dependency>
- </dependencies>
- </project>
整个项目的结构图是这样的
RedisConfiguration.java
[java] view plain copy
- package com.ibigsea.springboot_redis_demo.config;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import redis.clients.jedis.JedisPool;
- import redis.clients.jedis.JedisPoolConfig;
- @Configuration
- public class RedisConfiguration {
- @Bean(name= "jedis.pool")
- @Autowired
- public JedisPool jedisPool(@Qualifier("jedis.pool.config") JedisPoolConfig config,
- @Value("${jedis.pool.host}")String host,
- @Value("${jedis.pool.port}")int port) {
- return new JedisPool(config, host, port);
- }
- @Bean(name= "jedis.pool.config")
- public JedisPoolConfig jedisPoolConfig (@Value("${jedis.pool.config.maxTotal}")int maxTotal,
- @Value("${jedis.pool.config.maxIdle}")int maxIdle,
- @Value("${jedis.pool.config.maxWaitMillis}")int maxWaitMillis) {
- JedisPoolConfig config = new JedisPoolConfig();
- config.setMaxTotal(maxTotal);
- config.setMaxIdle(maxIdle);
- config.setMaxWaitMillis(maxWaitMillis);
- return config;
- }
- }
RedisClient.java
[java] view plain copy
- package com.ibigsea.springboot_redis_demo.config;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import redis.clients.jedis.Jedis;
- import redis.clients.jedis.JedisPool;
- /**
- * 就一个小Demo 随便写下
- * @author bigsea
- *
- */
- @Component
- public class RedisClient {
- @Autowired
- private JedisPool jedisPool;
- public void set(String key, String value) throws Exception {
- Jedis jedis = null;
- try {
- jedis = jedisPool.getResource();
- jedis.set(key, value);
- } finally {
- //返还到连接池
- jedis.close();
- }
- }
- public String get(String key) throws Exception {
- Jedis jedis = null;
- try {
- jedis = jedisPool.getResource();
- return jedis.get(key);
- } finally {
- //返还到连接池
- jedis.close();
- }
- }
- }
App.java
[java] view plain copy
- package com.ibigsea.springboot_redis_demo;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import com.ibigsea.springboot_redis_demo.config.RedisClient;
- /**
- * 是Spring Boot项目的核心注解,主要是开启自动配置
- */
- @SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
- @RestController
- public class App {
- @Autowired
- private RedisClient redisClinet;
- public static void main(String[] args) {
- SpringApplication.run(App.class, args);
- }
- @RequestMapping("/set")
- public String set(String key, String value) throws Exception{
- redisClinet.set(key, value);
- return "success";
- }
- @RequestMapping("/get")
- public String get(String key) throws Exception {
- return redisClinet.get(key);
- }
- }
application.yml
[html] view plain copy
- jedis :
- pool :
- host : 127.0.0.1
- port : 6379
- config :
- maxTotal: 100
- maxIdle: 10
- maxWaitMillis : 100000
- server :
- port : 8082
运行结果:
实现自己的jedis-spring-boot-starter
一些自动配置的东西这里面有讲
http://blog.csdn.net/a67474506/article/details/52013634
首先我们创建一个jedis-spring-boot-starter
pom.xml
[html] view plain copy
- <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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.ibigsea</groupId>
- <artifactId>jedis-spring-boot-starter</artifactId>
- <version>1.0-SNAPSHOT</version>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <boot.version>1.3.5.RELEASE</boot.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot</artifactId>
- <version>${boot.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-autoconfigure</artifactId>
- <version>${boot.version}</version>
- </dependency>
- <dependency>
- <groupId>redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>2.8.2</version>
- </dependency>
- </dependencies>
- </project>
目录结构是这样的
JedisProperties.java
[java] view plain copy
- package com.ibigsea.jedis.autoconfigure;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- @ConfigurationProperties(prefix = JedisProperties.JEDIS_PREFIX)
- public class JedisProperties {
- public static final String JEDIS_PREFIX = "jedis";
- private String host;
- private int port;
- private int maxTotal;
- private int maxIdle;
- private int maxWaitMillis;
- public String getHost() {
- return host;
- }
- public void setHost(String host) {
- this.host = host;
- }
- public int getPort() {
- return port;
- }
- public void setPort(int port) {
- this.port = port;
- }
- public int getMaxTotal() {
- return maxTotal;
- }
- public void setMaxTotal(int maxTotal) {
- this.maxTotal = maxTotal;
- }
- public int getMaxIdle() {
- return maxIdle;
- }
- public void setMaxIdle(int maxIdle) {
- this.maxIdle = maxIdle;
- }
- public int getMaxWaitMillis() {
- return maxWaitMillis;
- }
- public void setMaxWaitMillis(int maxWaitMillis) {
- this.maxWaitMillis = maxWaitMillis;
- }
- }
JedisAutoConfiguration.java
[java] view plain copy
- package com.ibigsea.jedis.autoconfigure;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
- import org.springframework.boot.context.properties.EnableConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import com.ibigsea.jedis.client.RedisClient;
- import redis.clients.jedis.JedisPool;
- import redis.clients.jedis.JedisPoolConfig;
- @Configuration
- @EnableConfigurationProperties(JedisProperties.class)//开启属性注入,通过@autowired注入
- @ConditionalOnClass(RedisClient.class)//判断这个类是否在classpath中存在
- public class JedisAutoConfiguration {
- @Autowired
- private JedisProperties prop;
- @Bean(name="jedisPool")
- public JedisPool jedisPool() {
- JedisPoolConfig config = new JedisPoolConfig();
- config.setMaxTotal(prop.getMaxTotal());
- config.setMaxIdle(prop.getMaxIdle());
- config.setMaxWaitMillis(prop.getMaxWaitMillis());
- return new JedisPool(config, prop.getHost(), prop.getPort());
- }
- @Bean
- @ConditionalOnMissingBean(RedisClient.class)//容器中如果没有RedisClient这个类,那么自动配置这个RedisClient
- public RedisClient redisClient(@Qualifier("jedisPool")JedisPool pool) {
- RedisClient redisClient = new RedisClient();
- redisClient.setJedisPool(pool);
- return redisClient;
- }
- }
RedisClient.java
[java] view plain copy
- package com.ibigsea.jedis.client;
- import redis.clients.jedis.Jedis;
- import redis.clients.jedis.JedisPool;
- /**
- * 就一个小Demo 随便写下
- * @author bigsea
- *
- */
- public class RedisClient {
- private JedisPool jedisPool;
- public void set(String key, String value) throws Exception {
- Jedis jedis = null;
- try {
- jedis = jedisPool.getResource();
- jedis.set(key, value);
- } finally {
- //返还到连接池
- jedis.close();
- }
- }
- public String get(String key) throws Exception {
- Jedis jedis = null;
- try {
- jedis = jedisPool.getResource();
- return jedis.get(key);
- } finally {
- //返还到连接池
- jedis.close();
- }
- }
- public JedisPool getJedisPool() {
- return jedisPool;
- }
- public void setJedisPool(JedisPool jedisPool) {
- this.jedisPool = jedisPool;
- }
- }
还要在spring.factories里面配置
[html] view plain copy
- # Auto Configure
- org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
- com.ibigsea.jedis.autoconfigure.JedisAutoConfiguration
新建一个工程测试下
pom.xml
[html] view plain copy
- <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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.ibigsea</groupId>
- <artifactId>test-starter</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>test-starter</name>
- <url>http://maven.apache.org</url>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <boot.version>1.3.5.RELEASE</boot.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>com.ibigsea</groupId>
- <artifactId>jedis-spring-boot-starter</artifactId>
- <version>1.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <version>${boot.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <version>${boot.version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- </project>
application.yml
[java] view plain copy
- jedis :
- host : 127.0.0.1
- port : 6379
- maxTotal: 100
- maxIdle: 10
- maxWaitMillis : 100000
- server :
- port : 8082
App.java
[java] view plain copy
- package com.ibigsea.test_starter;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import com.ibigsea.jedis.client.RedisClient;
- @SpringBootApplication
- @RestController
- public class App {
- @Autowired
- private RedisClient redisClient;
- public static void main(String[] args) {
- SpringApplication.run(App.class, args);
- }
- @RequestMapping("/set")
- public String set(String key, String value) throws Exception{
- redisClient.set(key, value);
- return "success";
- }
- @RequestMapping("/get")
- public String get(String key) throws Exception {
- return redisClient.get(key);
- }
- }
测试结果
这里只是简单的写了下一个小demo,有兴趣的小伙伴可以自己去扩展更多的
比如实现集群连接, 分片连接,API扩展的更多一些
阅读全文
0 0
- Spring Boot集成Redis java实现配置
- Spring Boot集成Redis实现自动配置
- Spring Boot Redis 集成配置
- spring boot 集成redis 配置
- 5Spring Boot集成Redis实现自动配置
- Spring Boot集成Redis实现缓存
- Spring Boot集成Redis实现缓存机制
- Spring Boot集成Redis实现缓存
- Spring Boot集成Redis实现缓存
- Spring Boot Redis 集成
- Spring Boot集成Redis
- spring-boot 集成 redis
- spring boot 集成redis
- Spring boot集成Redis
- Spring Boot 集成Redis
- spring boot集成redis
- SpringBoot学习笔记(5) Spring Boot集成Redis实现自动配置
- spring boot +mybatis+redis集成
- Python学习_我该怎么读取文件中的数据并操作文件
- vector 声明时长度预设
- 第26章 线程
- Eclipse使用git的Push出现rejected
- spark 对于key/value 排序 取前几 top take(转载)
- Spring Boot集成Redis java实现配置
- ARM与 X86 CPU架构对比
- Java-不使用运算符,使用二进制符号进行求和
- mysql主从复制搭建中几种log和pos详解
- 使用implode()函数将数组逗号隔开连接为字符串
- 前置配置方案
- 40个Java多线程问题总结
- C++/C 宏定义(define)中# ## 的含义
- String对象的不可变性