spring-boot 和 redis 整合的一個小例子
阿新 • • 發佈:2019-02-02
轉自:http://blog.csdn.net/a67474506/article/details/52595053
在網上看到好多的spring-boot和redis整合的,弄到本地一直報Error resolving template "get", template might not exist or might not be accessible by any of the configured Template Resolvers錯誤,大概是因為模板什麼的沒有找到,網上找了好多方法都是不奏效。
然後找其他的方式,找到一個親測能用的方法。
專案的結構:
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>自己命名</groupId> <artifactId>自己命名</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>
application.yml
jedis :
pool :
host : 127.0.0.1
port : 6379
password : 自己的密碼
timeout : 60000
config :
maxTotal: 100
maxIdle: 10
maxWaitMillis : 100000
server :
port : 8082
app.java
package com.example; 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.example.first.domain.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); } }
redisClient.java
package com.example.first.domain; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; @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(); } } }
redisConfiguration.java
package com.example.first.domain;
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") //載入的applicant.yml中的引數
@Autowired
public JedisPool jedisPool(@Qualifier("jedis.pool.config") JedisPoolConfig config,
@Value("${jedis.pool.host}")String host,
@Value("${jedis.pool.port}")int port,
@Value("${jedis.pool.timeout}") int timeout,
@Value("${jedis.pool.password}") String password) {
return new JedisPool(config, host, port,timeout,password);
}
@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;
}
}
要說一下的是,如果redis設定了密碼啟動的時候要用 redis-server.exe redis.window.conf 啟動,用來啟用密碼。