代理模式简单举例

介绍一下,代理模式。

其实代理模式是我们最常用的,在任何框架中几乎都离不开代理模式的应用。

话不多说,直接上一个代码理解一下。

定义一个controller层。

java 复制代码
    private final CacheUserServiceImpl cacheUserService;
    
    /**
     * 代理模式
     * @return
     */
    @GetMapping("/proxyMode")
    public ResponseResult proxyMode(){
        // 使用你代理客户端
        ResponseResult currentUserInfo = cacheUserService.getCurrentUserInfo();
        return currentUserInfo;
    }	

定义一个serviceimpl实现userService接口。

java 复制代码
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class CacheUserServiceImpl implements UserService {
    private RedisService  redisService;
    private UserServiceImpl  userService;
	
	@Override
    public ResponseResult getCurrentUserInfo() {
        Object o = redisService.getRedisTemplate().opsForValue().get("userKey");
        //  先查缓存,查不到,在查user数据库接口。
        if (o != null){
            return ResponseResult.success(o);
        }else {
            ResponseResult currentUserInfo = userService.getCurrentUserInfo();
            return currentUserInfo;
        }
    }
}

看一下原本的userService的 实现类

java 复制代码
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    @Override
    public ResponseResult getCurrentUserInfo() {
        return ResponseResult.success("获取当前登录用户信息成功", baseMapper.getById(StpUtil.getLoginIdAsString()));
    }
}

这样我们就实现了一个最简单的代理。

我们现在只需要直接调用代理类:CacheUserServiceImpl。就可以实现userService的所有功能。

一般来说我们基于上面的思想,再结合 AOP 机制 和 自定义注解,再完善完善,其实你就实现了大名鼎鼎的springCache功能了。 哈哈哈😀😀😀

转自我的博客:http://he-bi.cn/#/article/214

相关推荐
OkeyProxy3 小时前
什麼是ISP提供的公共IP地址?
代理模式·proxy模式·ip地址·isp·海外ip代理
kikyo哎哟喂13 小时前
Java 代理模式详解
java·开发语言·代理模式
hxj..1 天前
【设计模式】代理模式
java·设计模式·代理模式·动态代理
武子康1 天前
Java-05 深入浅出 MyBatis - 配置深入 动态 SQL 参数、循环、片段
java·sql·设计模式·架构·mybatis·代理模式
武子康2 天前
Java-04 深入浅出 MyBatis - SqlSessionFactory 与 SqlSession DAO与Mapper 代理模式
java·mysql·spring·mybatis·springboot·代理模式
南城花随雪。3 天前
Mybatis框架之代理模式 (Proxy Pattern)
mybatis·代理模式
JhonKI6 天前
【算法】动态规划中01背包问题解析
算法·动态规划·代理模式
OkeyProxy7 天前
如何恢復電腦IP地址的手動設置?
代理模式·ip·ip地址·代理服务器·海外ip代理
无限大.10 天前
动态规划与贪心算法:核心区别与实例分析
贪心算法·动态规划·代理模式
丶Darling.11 天前
Day42 | 动态规划 :选或不选 打家劫舍&&打家劫舍II
算法·动态规划·代理模式