经过上面一些笔记的介绍, 咱们能够本身动手去集成Redis, 没有什么难度的html
还有Spring Boot官方提供了Spring-Data-Redis的Starter POMjava
有兴趣的能够查看下这篇资料web
http://blog.didispace.com/springbootredis/?utm_source=tuicool&utm_medium=referralredis
pom.xml spring
<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>
整个项目的结构图是这样的apache
RedisConfiguration.javaspringboot
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.javaapp
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.javamaven
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.ymlspring-boot
jedis : pool : host : 127.0.0.1 port : 6379 config : maxTotal: 100 maxIdle: 10 maxWaitMillis : 100000 server : port : 8082
运行结果:
一些自动配置的东西这里面有讲
http://blog.csdn.net/a67474506/article/details/52013634
首先咱们建立一个jedis-spring-boot-starter
pom.xml
<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
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
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
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里面配置
# Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.ibigsea.jedis.autoconfigure.JedisAutoConfiguration
新建一个工程测试下
pom.xml
<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
jedis : host : 127.0.0.1 port : 6379 maxTotal: 100 maxIdle: 10 maxWaitMillis : 100000 server : port : 8082
App.java
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扩展的更多一些