diff --git a/snailmall-user-service/src/main/java/com/njupt/swg/cache/JedisPoolWrapper.java b/snailmall-user-service/src/main/java/com/njupt/swg/cache/JedisPoolWrapper.java index addfe24..ecd017e 100644 --- a/snailmall-user-service/src/main/java/com/njupt/swg/cache/JedisPoolWrapper.java +++ b/snailmall-user-service/src/main/java/com/njupt/swg/cache/JedisPoolWrapper.java @@ -14,14 +14,26 @@ import javax.annotation.PostConstruct; * @CONTACT 317758022@qq.com * @DESC 只做了单个redis,但是课程中实现的redis客户端集群,要掌握一致性hash算法 */ +// 使用Spring框架的@Component注解,将该类标记为一个组件,意味着Spring会对这个类进行管理,使其能够参与到依赖注入等Spring容器的相关功能中,方便在其他需要使用该类实例的地方通过自动注入等方式获取实例,从而实现不同组件之间的协作。 @Component +// 使用lombok的@Slf4j注解,用于自动生成日志相关的代码,方便在类中记录各种操作相关的日志信息,便于后续查看操作情况以及进行问题排查,例如在初始化Jedis连接池时出现成功或失败的情况,都可以通过日志清晰地记录下来,方便了解系统状态以及定位问题。 @Slf4j public class JedisPoolWrapper { + // 通过Spring的依赖注入机制,使用@Autowired注解自动注入Parameters类型的实例,Parameters类应该是用于存储系统相关配置参数的类,在这里主要是期望从中获取与Redis连接池配置相关的参数,例如最大连接数、最大空闲连接数等信息。 @Autowired private Parameters parameters; + // 定义一个私有成员变量jedisPool,用于存储Jedis连接池对象,初始化为null,后续会在初始化方法中根据配置参数来创建实际的Jedis连接池实例。 private JedisPool jedisPool = null; + /** + * 使用Spring的@PostConstruct注解标记这个方法,该注解表示这个方法会在类实例化且依赖注入完成后自动被调用,主要用于进行一些初始化的操作。 + * 在这个方法中,具体的初始化逻辑如下: + * 首先,创建一个JedisPoolConfig对象,JedisPoolConfig类用于配置Jedis连接池的各种参数,比如连接池中的最大连接数、最大空闲连接数以及获取连接时的最大等待时间等。 + * 接着,通过注入的Parameters实例获取相应的Redis配置参数,并设置到JedisPoolConfig对象中。例如,调用parameters.getRedisMaxTotal()方法获取最大连接数配置参数,并通过config.setMaxTotal方法设置到JedisPoolConfig对象中,以此类推,对最大空闲连接数和最大等待时间等参数也进行相应的设置操作。 + * 然后,使用配置好的JedisPoolConfig对象以及从Parameters实例中获取的Redis主机地址(parameters.getRedisHost())、端口号(parameters.getRedisPort())、超时时间(2000毫秒)和密码("xxx",实际应用中应替换为真实的密码信息)等信息,创建一个JedisPool连接池对象,并赋值给jedisPool成员变量,这样就完成了Jedis连接池的初始化工作。 + * 如果在整个初始化过程中出现任何异常,会通过log.error方法记录“【初始化redis连接池失败】”的错误日志以及具体的异常信息,方便后续排查问题;如果初始化成功,则会通过log.info方法记录“【初始化redis连接池成功】”的日志信息,用于提示系统初始化操作的完成情况。 + */ @PostConstruct public void init(){ try { @@ -36,7 +48,12 @@ public class JedisPoolWrapper { } } + /** + * 这是一个对外提供的公共方法,用于获取已经初始化好的JedisPool连接池对象。 + * 其他类可以通过调用这个方法来获取JedisPool实例,进而从连接池中获取Jedis客户端连接,用于操作Redis缓存等相关操作。 + * 返回之前在init方法中初始化好的JedisPool对象,如果init方法执行过程中出现异常导致JedisPool没有成功初始化(即jedisPool仍为null),那么返回的就是null,调用者需要根据实际情况进行相应的处理,比如判断返回值是否为null来决定后续的操作逻辑。 + */ public JedisPool getJedisPool() { return jedisPool; } -} +} \ No newline at end of file