Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7bac649

Browse files
添加redis缓存
1 parent b0ae20e commit 7bac649

File tree

9 files changed

+106
-5
lines changed

9 files changed

+106
-5
lines changed

‎pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
<dependency>
7676
<groupId>com.github.theborakompanioni</groupId>
7777
<artifactId>thymeleaf-extras-shiro</artifactId>
78+
<version>1.2.1</version>
7879
</dependency>
7980
<dependency>
8081
<groupId>org.crazycake</groupId>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,45 @@
11
package com.study.config;
22

3+
import org.apache.log4j.Logger;
4+
import org.springframework.beans.factory.annotation.Value;
35
import org.springframework.cache.annotation.CachingConfigurerSupport;
46
import org.springframework.cache.annotation.EnableCaching;
7+
import org.springframework.context.annotation.Bean;
58
import org.springframework.context.annotation.Configuration;
9+
import redis.clients.jedis.JedisPool;
10+
import redis.clients.jedis.JedisPoolConfig;
611

712
/**
813
* Created by yangqj on 2017年4月30日.
914
*/
1015
@Configuration
1116
@EnableCaching
1217
public class RedisConfig extends CachingConfigurerSupport {
18+
@Value("${spring.redis.host}")
19+
private String host;
20+
21+
@Value("${spring.redis.port}")
22+
private int port;
23+
24+
@Value("${spring.redis.timeout}")
25+
private int timeout;
26+
27+
@Value("${spring.redis.pool.max-idle}")
28+
private int maxIdle;
29+
30+
@Value("${spring.redis.pool.max-wait}")
31+
private long maxWaitMillis;
32+
33+
@Bean
34+
public JedisPool redisPoolFactory() {
35+
Logger.getLogger(getClass()).info("JedisPool注入成功!!");
36+
Logger.getLogger(getClass()).info("redis地址:" + host + ":" + port);
37+
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
38+
jedisPoolConfig.setMaxIdle(maxIdle);
39+
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
40+
41+
JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout);
42+
43+
return jedisPool;
44+
}
1345
}

‎src/main/java/com/study/config/ShiroConfig.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@
1010
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
1111
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
1212
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
13+
import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
14+
import org.crazycake.shiro.RedisCacheManager;
15+
import org.crazycake.shiro.RedisManager;
16+
import org.crazycake.shiro.RedisSessionDAO;
1317
import org.springframework.beans.factory.annotation.Autowired;
18+
import org.springframework.beans.factory.annotation.Value;
1419
import org.springframework.context.annotation.Bean;
1520
import org.springframework.context.annotation.Configuration;
1621

@@ -26,6 +31,15 @@ public class ShiroConfig {
2631
@Autowired(required = false)
2732
private ResourcesService resourcesService;
2833

34+
@Value("${spring.redis.host}")
35+
private String host;
36+
37+
@Value("${spring.redis.port}")
38+
private int port;
39+
40+
@Value("${spring.redis.timeout}")
41+
private int timeout;
42+
2943
/**
3044
* ShiroDialect,为了在thymeleaf里使用shiro的标签的bean
3145
* @return
@@ -91,6 +105,10 @@ public SecurityManager securityManager(){
91105
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
92106
//设置realm.
93107
securityManager.setRealm(myShiroRealm());
108+
// 自定义缓存实现 使用redis
109+
securityManager.setCacheManager(cacheManager());
110+
// 自定义session管理 使用redis
111+
securityManager.setSessionManager(sessionManager());
94112
return securityManager;
95113
}
96114

@@ -132,6 +150,21 @@ public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(S
132150
return authorizationAttributeSourceAdvisor;
133151
}
134152

153+
/**
154+
* 配置shiro redisManager
155+
* 使用的是shiro-redis开源插件
156+
* @return
157+
*/
158+
public RedisManager redisManager() {
159+
RedisManager redisManager = new RedisManager();
160+
redisManager.setHost(host);
161+
redisManager.setPort(port);
162+
redisManager.setExpire(1800);// 配置缓存过期时间
163+
redisManager.setTimeout(timeout);
164+
// redisManager.setPassword(password);
165+
return redisManager;
166+
}
167+
135168
/**
136169
* cacheManager 缓存 redis实现
137170
* 使用的是shiro-redis开源插件
@@ -143,4 +176,25 @@ public RedisCacheManager cacheManager() {
143176
return redisCacheManager;
144177
}
145178

179+
/**
180+
* RedisSessionDAO shiro sessionDao层的实现 通过redis
181+
* 使用的是shiro-redis开源插件
182+
*/
183+
@Bean
184+
public RedisSessionDAO redisSessionDAO() {
185+
RedisSessionDAO redisSessionDAO = new RedisSessionDAO();
186+
redisSessionDAO.setRedisManager(redisManager());
187+
return redisSessionDAO;
188+
}
189+
190+
/**
191+
* Session Manager
192+
* 使用的是shiro-redis开源插件
193+
*/
194+
@Bean
195+
public DefaultWebSessionManager sessionManager() {
196+
DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
197+
sessionManager.setSessionDAO(redisSessionDAO());
198+
return sessionManager;
199+
}
146200
}

‎src/main/java/com/study/model/Resources.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package com.study.model;
22

33
import javax.persistence.*;
4-
public class Resources {
4+
import java.io.Serializable;
5+
6+
public class Resources implements Serializable{
7+
private static final long serialVersionUID = -6812242071705361506L;
58
@Id
69
@GeneratedValue(strategy = GenerationType.IDENTITY)
710
private Integer id;

‎src/main/java/com/study/model/Role.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.study.model;
22

33
import javax.persistence.*;
4+
import java.io.Serializable;
45

5-
public class Role {
6+
public class Role implements Serializable{
7+
private static final long serialVersionUID = -6140090613812307452L;
68
@Id
79
@GeneratedValue(strategy = GenerationType.IDENTITY)
810
private Integer id;

‎src/main/java/com/study/model/RoleResources.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.study.model;
22

33
import javax.persistence.*;
4+
import java.io.Serializable;
45

56
@Table(name = "role_resources")
6-
public class RoleResources {
7+
public class RoleResources implements Serializable{
8+
private static final long serialVersionUID = -8559867942708057891L;
79
@Id
810
@Column(name = "roleId")
911
private Integer roleid;

‎src/main/java/com/study/model/User.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.study.model;
22

33
import javax.persistence.*;
4+
import java.io.Serializable;
45

5-
public class User {
6+
public class User implements Serializable{
7+
private static final long serialVersionUID = -8736616045315083846L;
68
@Id
79
@GeneratedValue(strategy = GenerationType.IDENTITY)
810
private Integer id;

‎src/main/java/com/study/model/UserRole.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.study.model;
22

33
import javax.persistence.*;
4+
import java.io.Serializable;
45

56
@Table(name = "user_role")
6-
public class UserRole {
7+
public class UserRole implements Serializable{
8+
private static final long serialVersionUID = -916411139749530670L;
79
@Column(name = "userId")
810
private Integer userid;
911

‎src/main/java/com/study/service/impl/ResourcesServiceImpl.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import com.study.model.Resources;
88
import com.study.model.User;
99
import com.study.service.ResourcesService;
10+
import org.springframework.cache.annotation.CachePut;
11+
import org.springframework.cache.annotation.Cacheable;
1012
import org.springframework.stereotype.Service;
1113
import tk.mybatis.mapper.entity.Example;
1214

@@ -38,6 +40,7 @@ public List<Resources> queryAll(){
3840
}
3941

4042
@Override
43+
@Cacheable(cacheNames="resources",key="#map['userid'].toString()+#map['type']")
4144
public List<Resources> loadUserResources(Map<String, Object> map) {
4245
return resourcesMapper.loadUserResources(map);
4346
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /