From ec46267f66382b177cdd6a35d5a6cc9728bbe710 Mon Sep 17 00:00:00 2001
From: LSZ <zhao@idsmanager.com>
Date: Sat, 23 Jul 2016 00:18:23 +0800
Subject: [PATCH] =?UTF-8?q?(151)=20-=20=E6=95=B0=E6=8D=AE=E6=B7=BB?=
 =?UTF-8?q?=E5=8A=A0Ehcache=E7=BC=93=E5=AD=98=E6=94=AF=E6=8C=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../sos/infrastructure/CacheConstants.java    | 38 +++++++++++++++++++
 .../jdbc/OauthRepositoryJdbc.java             |  6 ++-
 .../jdbc/UserRepositoryJdbc.java              |  5 +++
 3 files changed, 48 insertions(+), 1 deletion(-)
 create mode 100644 src/main/java/com/monkeyk/sos/infrastructure/CacheConstants.java

diff --git a/src/main/java/com/monkeyk/sos/infrastructure/CacheConstants.java b/src/main/java/com/monkeyk/sos/infrastructure/CacheConstants.java
new file mode 100644
index 0000000..502e6ea
--- /dev/null
+++ b/src/main/java/com/monkeyk/sos/infrastructure/CacheConstants.java
@@ -0,0 +1,38 @@
+package com.monkeyk.sos.infrastructure;
+
+/**
+ * 2016/7/22
+ * <p/>
+ * 定义系统中使用的CACHE的常量
+ * 名称与 ehcache.xml 中对应
+ * <p/>
+ *
+ * @author Shengzhao Li
+ */
+public abstract class CacheConstants {
+
+    /**
+     * client Details Cache
+     */
+    public static final String CLIENT_DETAILS_CACHE = "clientDetailsCache";
+
+    /**
+     * access Token Cache
+     */
+    public static final String ACCESS_TOKEN_CACHE = "accessTokenCache";
+
+    /**
+     * authorization Code Cache
+     */
+    public static final String AUTHORIZATION_CODE_CACHE = "authorizationCodeCache";
+
+    /**
+     * user Cache
+     */
+    public static final String USER_CACHE = "userCache";
+
+
+    private CacheConstants() {
+    }
+
+}
diff --git a/src/main/java/com/monkeyk/sos/infrastructure/jdbc/OauthRepositoryJdbc.java b/src/main/java/com/monkeyk/sos/infrastructure/jdbc/OauthRepositoryJdbc.java
index 6dffa8a..39f78e0 100644
--- a/src/main/java/com/monkeyk/sos/infrastructure/jdbc/OauthRepositoryJdbc.java
+++ b/src/main/java/com/monkeyk/sos/infrastructure/jdbc/OauthRepositoryJdbc.java
@@ -13,7 +13,10 @@ package com.monkeyk.sos.infrastructure.jdbc;
 
 import com.monkeyk.sos.domain.oauth.OauthClientDetails;
 import com.monkeyk.sos.domain.oauth.OauthRepository;
+import com.monkeyk.sos.infrastructure.CacheConstants;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Repository;
 
@@ -28,7 +31,6 @@ import java.util.List;
 public class OauthRepositoryJdbc implements OauthRepository {
 
 
-
     private static OauthClientDetailsRowMapper oauthClientDetailsRowMapper = new OauthClientDetailsRowMapper();
 
 
@@ -37,6 +39,7 @@ public class OauthRepositoryJdbc implements OauthRepository {
 
 
     @Override
+    @Cacheable(value = CacheConstants.CLIENT_DETAILS_CACHE, key = "#clientId")
     public OauthClientDetails findOauthClientDetails(String clientId) {
         final String sql = " select * from oauth_client_details where  client_id = ? ";
         final List<OauthClientDetails> list = this.jdbcTemplate.query(sql, new Object[]{clientId}, oauthClientDetailsRowMapper);
@@ -50,6 +53,7 @@ public class OauthRepositoryJdbc implements OauthRepository {
     }
 
     @Override
+    @CacheEvict(value = CacheConstants.CLIENT_DETAILS_CACHE, key = "#clientId")
     public void updateOauthClientDetailsArchive(String clientId, boolean archive) {
         final String sql = " update oauth_client_details set archived = ? where client_id = ? ";
         this.jdbcTemplate.update(sql, archive, clientId);
diff --git a/src/main/java/com/monkeyk/sos/infrastructure/jdbc/UserRepositoryJdbc.java b/src/main/java/com/monkeyk/sos/infrastructure/jdbc/UserRepositoryJdbc.java
index 7f91a5a..a263268 100644
--- a/src/main/java/com/monkeyk/sos/infrastructure/jdbc/UserRepositoryJdbc.java
+++ b/src/main/java/com/monkeyk/sos/infrastructure/jdbc/UserRepositoryJdbc.java
@@ -14,8 +14,11 @@ package com.monkeyk.sos.infrastructure.jdbc;
 import com.monkeyk.sos.domain.user.Privilege;
 import com.monkeyk.sos.domain.user.User;
 import com.monkeyk.sos.domain.user.UserRepository;
+import com.monkeyk.sos.infrastructure.CacheConstants;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Repository;
 
@@ -93,6 +96,7 @@ public class UserRepositoryJdbc implements UserRepository {
     }
 
     @Override
+    @CacheEvict(value = CacheConstants.USER_CACHE, key = "#user.username()")
     public void updateUser(final User user) {
         final String sql = " update user_ set username = ?, password = ?, phone = ?,email = ? where guid = ? ";
         this.jdbcTemplate.update(sql, ps -> {
@@ -107,6 +111,7 @@ public class UserRepositoryJdbc implements UserRepository {
     }
 
     @Override
+    @Cacheable(value = CacheConstants.USER_CACHE, key = "#username")
     public User findByUsername(String username) {
         final String sql = " select * from user_ where username = ? and archived = 0 ";
         final List<User> list = this.jdbcTemplate.query(sql, new Object[]{username}, userRowMapper);