springboot手动集成Redis

通过上面一些笔记的介绍, 我们可以自己动手去集成Redis, 没有什么难度的

还有Spring Boot官方提供了Spring-Data-Redis的Starter POM

有兴趣的可以查看下这篇资料

http://blog.didispace.com/springbootredis/?utm_source=tuicool&utm_medium=referral


手动集成Redis

pom.xml 


 
 
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0 </modelVersion>
  4. <groupId>com.ibigsea </groupId>
  5. <artifactId>springboot-redis-demo </artifactId>
  6. <version>0.0.1-SNAPSHOT </version>
  7. <properties>
  8. <project.build.sourceEncoding>UTF-8 </project.build.sourceEncoding>
  9. <boot.version>1.3.5.RELEASE </boot.version>
  10. </properties>
  11. <dependencies>
  12. <dependency>
  13. <groupId>org.springframework.boot </groupId>
  14. <artifactId>spring-boot-starter-web </artifactId>
  15. <version>${boot.version} </version>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework.boot </groupId>
  19. <artifactId>spring-boot-starter-test </artifactId>
  20. <version>${boot.version} </version>
  21. <scope>test </scope>
  22. </dependency>
  23. <dependency>
  24. <groupId>redis.clients </groupId>
  25. <artifactId>jedis </artifactId>
  26. <version>2.8.2 </version>
  27. </dependency>
  28. </dependencies>
  29. </project>

整个项目的结构图是这样的


RedisConfiguration.java


 
 
  1. package com.ibigsea.springboot_redis_demo.config;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.beans.factory.annotation.Qualifier;
  4. import org.springframework.beans.factory.annotation.Value;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. import redis.clients.jedis.JedisPool;
  8. import redis.clients.jedis.JedisPoolConfig;
  9. @Configuration
  10. public class RedisConfiguration {
  11. @Bean(name= "jedis.pool")
  12. @Autowired
  13. public JedisPool jedisPool(@Qualifier("jedis.pool.config") JedisPoolConfig config,
  14. @Value("${jedis.pool.host}")String host,
  15. @Value("${jedis.pool.port}")int port) {
  16. return new JedisPool(config, host, port);
  17. }
  18. @Bean(name= "jedis.pool.config")
  19. public JedisPoolConfig jedisPoolConfig (@Value("${jedis.pool.config.maxTotal}")int maxTotal,
  20. @Value("${jedis.pool.config.maxIdle}")int maxIdle,
  21. @Value("${jedis.pool.config.maxWaitMillis}")int maxWaitMillis) {
  22. JedisPoolConfig config = new JedisPoolConfig();
  23. config.setMaxTotal(maxTotal);
  24. config.setMaxIdle(maxIdle);
  25. config.setMaxWaitMillis(maxWaitMillis);
  26. return config;
  27. }
  28. }

RedisClient.java


 
 
  1. package com.ibigsea.springboot_redis_demo.config;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.stereotype.Component;
  4. import redis.clients.jedis.Jedis;
  5. import redis.clients.jedis.JedisPool;
  6. /**
  7. * 就一个小Demo 随便写下
  8. * @author bigsea
  9. *
  10. */
  11. @Component
  12. public class RedisClient {
  13. @Autowired
  14. private JedisPool jedisPool;
  15. public void set(String key, String value) throws Exception {
  16. Jedis jedis = null;
  17. try {
  18. jedis = jedisPool.getResource();
  19. jedis.set(key, value);
  20. } finally {
  21. //返还到连接池
  22. jedis.close();
  23. }
  24. }
  25. public String get(String key) throws Exception {
  26. Jedis jedis = null;
  27. try {
  28. jedis = jedisPool.getResource();
  29. return jedis.get(key);
  30. } finally {
  31. //返还到连接池
  32. jedis.close();
  33. }
  34. }
  35. }

App.java


 
 
  1. package com.ibigsea.springboot_redis_demo;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7. import com.ibigsea.springboot_redis_demo.config.RedisClient;
  8. /**
  9. * 是Spring Boot项目的核心注解,主要是开启自动配置
  10. */
  11. @SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
  12. @RestController
  13. public class App {
  14. @Autowired
  15. private RedisClient redisClinet;
  16. public static void main(String[] args) {
  17. SpringApplication.run(App.class, args);
  18. }
  19. @RequestMapping( "/set")
  20. public String set(String key, String value) throws Exception{
  21. redisClinet.set(key, value);
  22. return "success";
  23. }
  24. @RequestMapping( "/get")
  25. public String get(String key) throws Exception {
  26. return redisClinet.get(key);
  27. }
  28. }

application.yml


 
 
  1. jedis :
  2. pool :
  3. host : 127.0.0.1
  4. port : 6379
  5. config :
  6. maxTotal: 100
  7. maxIdle: 10
  8. maxWaitMillis : 100000
  9. server :
  10. port : 8082

运行结果:

 





实现自己的jedis-spring-boot-starter

一些自动配置的东西这里面有讲

http://blog.csdn.net/a67474506/article/details/52013634

 

首先我们创建一个jedis-spring-boot-starter

pom.xml


 
 
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0 </modelVersion>
  4. <groupId>com.ibigsea </groupId>
  5. <artifactId>jedis-spring-boot-starter </artifactId>
  6. <version>1.0-SNAPSHOT </version>
  7. <properties>
  8. <project.build.sourceEncoding>UTF-8 </project.build.sourceEncoding>
  9. <boot.version>1.3.5.RELEASE </boot.version>
  10. </properties>
  11. <dependencies>
  12. <dependency>
  13. <groupId>org.springframework.boot </groupId>
  14. <artifactId>spring-boot </artifactId>
  15. <version>${boot.version} </version>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework.boot </groupId>
  19. <artifactId>spring-boot-autoconfigure </artifactId>
  20. <version>${boot.version} </version>
  21. </dependency>
  22. <dependency>
  23. <groupId>redis.clients </groupId>
  24. <artifactId>jedis </artifactId>
  25. <version>2.8.2 </version>
  26. </dependency>
  27. </dependencies>
  28. </project>

目录结构是这样的



JedisProperties.java


 
 
  1. package com.ibigsea.jedis.autoconfigure;
  2. import org.springframework.boot.context.properties.ConfigurationProperties;
  3. @ConfigurationProperties(prefix = JedisProperties.JEDIS_PREFIX)
  4. public class JedisProperties {
  5. public static final String JEDIS_PREFIX = "jedis";
  6. private String host;
  7. private int port;
  8. private int maxTotal;
  9. private int maxIdle;
  10. private int maxWaitMillis;
  11. public String getHost() {
  12. return host;
  13. }
  14. public void setHost(String host) {
  15. this.host = host;
  16. }
  17. public int getPort() {
  18. return port;
  19. }
  20. public void setPort(int port) {
  21. this.port = port;
  22. }
  23. public int getMaxTotal() {
  24. return maxTotal;
  25. }
  26. public void setMaxTotal(int maxTotal) {
  27. this.maxTotal = maxTotal;
  28. }
  29. public int getMaxIdle() {
  30. return maxIdle;
  31. }
  32. public void setMaxIdle(int maxIdle) {
  33. this.maxIdle = maxIdle;
  34. }
  35. public int getMaxWaitMillis() {
  36. return maxWaitMillis;
  37. }
  38. public void setMaxWaitMillis(int maxWaitMillis) {
  39. this.maxWaitMillis = maxWaitMillis;
  40. }
  41. }

JedisAutoConfiguration.java


 
 
  1. package com.ibigsea.jedis.autoconfigure;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.beans.factory.annotation.Qualifier;
  4. import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
  5. import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
  6. import org.springframework.boot.context.properties.EnableConfigurationProperties;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. import com.ibigsea.jedis.client.RedisClient;
  10. import redis.clients.jedis.JedisPool;
  11. import redis.clients.jedis.JedisPoolConfig;
  12. @Configuration
  13. @EnableConfigurationProperties(JedisProperties.class) //开启属性注入,通过@autowired注入
  14. @ConditionalOnClass(RedisClient.class) //判断这个类是否在classpath中存在
  15. public class JedisAutoConfiguration {
  16. @Autowired
  17. private JedisProperties prop;
  18. @Bean(name= "jedisPool")
  19. public JedisPool jedisPool() {
  20. JedisPoolConfig config = new JedisPoolConfig();
  21. config.setMaxTotal(prop.getMaxTotal());
  22. config.setMaxIdle(prop.getMaxIdle());
  23. config.setMaxWaitMillis(prop.getMaxWaitMillis());
  24. return new JedisPool(config, prop.getHost(), prop.getPort());
  25. }
  26. @Bean
  27. @ConditionalOnMissingBean(RedisClient.class) //容器中如果没有RedisClient这个类,那么自动配置这个RedisClient
  28. public RedisClient redisClient(@Qualifier("jedisPool")JedisPool pool) {
  29. RedisClient redisClient = new RedisClient();
  30. redisClient.setJedisPool(pool);
  31. return redisClient;
  32. }
  33. }

RedisClient.java


 
 
  1. package com.ibigsea.jedis.client;
  2. import redis.clients.jedis.Jedis;
  3. import redis.clients.jedis.JedisPool;
  4. /**
  5. * 就一个小Demo 随便写下
  6. * @author bigsea
  7. *
  8. */
  9. public class RedisClient {
  10. private JedisPool jedisPool;
  11. public void set(String key, String value) throws Exception {
  12. Jedis jedis = null;
  13. try {
  14. jedis = jedisPool.getResource();
  15. jedis.set(key, value);
  16. } finally {
  17. //返还到连接池
  18. jedis.close();
  19. }
  20. }
  21. public String get(String key) throws Exception {
  22. Jedis jedis = null;
  23. try {
  24. jedis = jedisPool.getResource();
  25. return jedis.get(key);
  26. } finally {
  27. //返还到连接池
  28. jedis.close();
  29. }
  30. }
  31. public JedisPool getJedisPool() {
  32. return jedisPool;
  33. }
  34. public void setJedisPool(JedisPool jedisPool) {
  35. this.jedisPool = jedisPool;
  36. }
  37. }

还要在spring.factories里面配置


 
 
  1. # Auto Configure
  2. org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  3. com.ibigsea.jedis.autoconfigure.JedisAutoConfiguration



新建一个工程测试下


pom.xml


 
 
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0 </modelVersion>
  4. <groupId>com.ibigsea </groupId>
  5. <artifactId>test-starter </artifactId>
  6. <version>0.0.1-SNAPSHOT </version>
  7. <packaging>jar </packaging>
  8. <name>test-starter </name>
  9. <url>http://maven.apache.org </url>
  10. <properties>
  11. <project.build.sourceEncoding>UTF-8 </project.build.sourceEncoding>
  12. <boot.version>1.3.5.RELEASE </boot.version>
  13. </properties>
  14. <dependencies>
  15. <dependency>
  16. <groupId>com.ibigsea </groupId>
  17. <artifactId>jedis-spring-boot-starter </artifactId>
  18. <version>1.0-SNAPSHOT </version>
  19. </dependency>
  20. <dependency>
  21. <groupId>org.springframework.boot </groupId>
  22. <artifactId>spring-boot-starter-web </artifactId>
  23. <version>${boot.version} </version>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.boot </groupId>
  27. <artifactId>spring-boot-starter-test </artifactId>
  28. <version>${boot.version} </version>
  29. <scope>test </scope>
  30. </dependency>
  31. </dependencies>
  32. </project>

application.yml


 
 
  1. jedis :
  2. host : 127.0.0.1
  3. port : 6379
  4. maxTotal: 100
  5. maxIdle: 10
  6. maxWaitMillis : 100000
  7. server :
  8. port : 8082

App.java


 
 
  1. package com.ibigsea.test_starter;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7. import com.ibigsea.jedis.client.RedisClient;
  8. @SpringBootApplication
  9. @RestController
  10. public class App {
  11. @Autowired
  12. private RedisClient redisClient;
  13. public static void main(String[] args) {
  14. SpringApplication.run(App.class, args);
  15. }
  16. @RequestMapping( "/set")
  17. public String set(String key, String value) throws Exception{
  18. redisClient.set(key, value);
  19. return "success";
  20. }
  21. @RequestMapping( "/get")
  22. public String get(String key) throws Exception {
  23. return redisClient.get(key);
  24. }
  25. }

测试结果







这里只是简单的写了下一个小demo,有兴趣的小伙伴可以自己去扩展更多的

比如实现集群连接, 分片连接,API扩展的更多一些

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值