├── src
├── main
│ ├── resources
│ │ ├── myself
│ │ │ ├── mysql.properties
│ │ │ ├── redis.properties
│ │ │ └── log4j.properties
│ │ ├── pro
│ │ │ ├── mysql.properties
│ │ │ ├── redis.properties
│ │ │ └── log4j.properties
│ │ ├── test
│ │ │ ├── mysql.properties
│ │ │ ├── redis.properties
│ │ │ └── log4j.properties
│ │ └── common
│ │ │ ├── applicationContext.xml
│ │ │ ├── applicationContext-mvc.xml
│ │ │ └── applicationContext-cache.xml
│ ├── webapp
│ │ ├── WEB-INF
│ │ │ ├── pages
│ │ │ │ └── index.jsp
│ │ │ └── web.xml
│ │ └── index.jsp
│ └── java
│ │ └── com
│ │ └── feng
│ │ ├── service
│ │ ├── TestService.java
│ │ └── impl
│ │ │ └── TestServiceImpl.java
│ │ ├── entity
│ │ └── User.java
│ │ ├── cache
│ │ ├── common
│ │ │ └── MyKeyGenerator.java
│ │ ├── guava
│ │ │ ├── GuavaCache.java
│ │ │ └── GuavaCacheFactoryBean.java
│ │ └── redis
│ │ │ └── RedisCacheFactoryBean.java
│ │ └── controller
│ │ └── TestController.java
└── test
│ └── java
│ └── com
│ └── feng
│ └── test
│ └── MainTest.java
├── README.md
├── .gitignore
├── pom.xml
└── LICENSE
/src/main/resources/myself/mysql.properties:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/resources/pro/mysql.properties:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/resources/test/mysql.properties:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## spring cache + guava + redis
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .project
2 | .metadata/
3 | .settings/
4 | .classpath
5 | *.log
6 | /target/
7 | src/main/resources/myself
--------------------------------------------------------------------------------
/src/main/resources/pro/redis.properties:
--------------------------------------------------------------------------------
1 | #redis common
2 | redis.maxIdle=200
3 | redis.maxActive=600
4 | redis.maxTotal=200
5 | redis.maxWait=30000
6 | redis.testOnBorrow=false
7 | redis.testOnReturn=true
8 |
9 |
10 | #redis
11 | redis.master.hostname=127.0.0.1
12 | redis.master.port=6379
13 |
--------------------------------------------------------------------------------
/src/main/resources/test/redis.properties:
--------------------------------------------------------------------------------
1 | #redis common
2 | redis.maxIdle=200
3 | redis.maxActive=600
4 | redis.maxTotal=200
5 | redis.maxWait=30000
6 | redis.testOnBorrow=false
7 | redis.testOnReturn=true
8 |
9 |
10 | #redis
11 | redis.master.hostname=127.0.0.1
12 | redis.master.port=6379
13 |
--------------------------------------------------------------------------------
/src/main/resources/myself/redis.properties:
--------------------------------------------------------------------------------
1 | #redis common
2 | redis.maxIdle=200
3 | redis.maxActive=600
4 | redis.maxTotal=200
5 | redis.maxWait=30000
6 | redis.testOnBorrow=false
7 | redis.testOnReturn=true
8 |
9 |
10 | #redis
11 | redis.master.hostname=127.0.0.1
12 | redis.master.port=6379
13 |
--------------------------------------------------------------------------------
/src/main/webapp/WEB-INF/pages/index.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
2 |
3 |
4 |
5 |
6 | test
7 |
8 |
9 | hello ${test}
10 |
11 |
--------------------------------------------------------------------------------
/src/main/webapp/index.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
2 |
3 |
4 |
5 |
6 | Insert title here
7 |
8 |
9 | HELLO WORLD 你好
10 |
11 |
--------------------------------------------------------------------------------
/src/main/java/com/feng/service/TestService.java:
--------------------------------------------------------------------------------
1 | package com.feng.service;
2 |
3 | public interface TestService {
4 |
5 | String defaultCache(String name);
6 |
7 | String guavaCache60seconds(String name);
8 | String guavaCache10minutes(String name);
9 | String guavaCache1hour(String name);
10 |
11 | String redisCache60seconds(String name);
12 | String redisCache10minutes(String name);
13 | String redisCache1hour(String name);
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/com/feng/entity/User.java:
--------------------------------------------------------------------------------
1 | package com.feng.entity;
2 |
3 | public class User {
4 |
5 | private int id;
6 | private String name;
7 | private int age;
8 |
9 |
10 | public int getId() {
11 | return id;
12 | }
13 | public void setId(int id) {
14 | this.id = id;
15 | }
16 | public String getName() {
17 | return name;
18 | }
19 | public void setName(String name) {
20 | this.name = name;
21 | }
22 | public int getAge() {
23 | return age;
24 | }
25 | public void setAge(int age) {
26 | this.age = age;
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/resources/pro/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootLogger=info,stdout,R
2 |
3 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
4 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
5 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
6 |
7 |
8 | log4j.appender.R=org.apache.log4j.RollingFileAppender
9 | log4j.appender.R.File=./example.log
10 | log4j.appender.R.MaxFileSize=100KB
11 | log4j.appender.R.MaxBackupIndex=1
12 | log4j.appender.R.layout=org.apache.log4j.PatternLayout
13 | log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
14 |
--------------------------------------------------------------------------------
/src/main/resources/test/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootLogger=info,stdout,R
2 |
3 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
4 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
5 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
6 |
7 |
8 | log4j.appender.R=org.apache.log4j.RollingFileAppender
9 | log4j.appender.R.File=./example.log
10 | log4j.appender.R.MaxFileSize=100KB
11 | log4j.appender.R.MaxBackupIndex=1
12 | log4j.appender.R.layout=org.apache.log4j.PatternLayout
13 | log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
14 |
--------------------------------------------------------------------------------
/src/main/resources/myself/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootLogger=info,stdout,R
2 |
3 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
4 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
5 | log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
6 |
7 |
8 | log4j.appender.R=org.apache.log4j.RollingFileAppender
9 | log4j.appender.R.File=./example.log
10 | log4j.appender.R.MaxFileSize=100KB
11 | log4j.appender.R.MaxBackupIndex=1
12 | log4j.appender.R.layout=org.apache.log4j.PatternLayout
13 | log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
14 |
--------------------------------------------------------------------------------
/src/main/java/com/feng/cache/common/MyKeyGenerator.java:
--------------------------------------------------------------------------------
1 | package com.feng.cache.common;
2 |
3 | import java.lang.reflect.Method;
4 |
5 | import org.springframework.cache.interceptor.KeyGenerator;
6 |
7 | public class MyKeyGenerator implements KeyGenerator {
8 |
9 | @Override
10 | public Object generate(Object target, Method method, Object... params) {
11 | if (params.length == 0) {
12 | return target.getClass().getName() + "." +method.getName();
13 | }
14 | if (params.length == 1) {
15 | Object param = params[0];
16 | if (param != null && !param.getClass().isArray()) {
17 | return target.getClass().getName() + "." + method.getName() + param;
18 | }
19 | }
20 | return target.getClass().getName() + "." + method.getName();
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/resources/common/applicationContext.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/main/java/com/feng/cache/guava/GuavaCache.java:
--------------------------------------------------------------------------------
1 | package com.feng.cache.guava;
2 |
3 | import org.springframework.cache.Cache;
4 | import org.springframework.cache.support.SimpleValueWrapper;
5 |
6 | public class GuavaCache implements Cache{
7 |
8 | public GuavaCache (String name,com.google.common.cache.Cache