初始化JedisCluster学习Spring FactoryBean的用法

本文介绍了Spring中的FactoryBean接口及其泛型支持,详细讲解了如何使用FactoryBean初始化JedisCluster Bean,包括其在Spring容器中的作用域管理。同时,文章探讨了InitializingBean接口,说明了afterPropertiesSet和init-method的执行顺序。通过实现这些接口,可以自定义复杂Bean的实例化逻辑,并确保JedisCluster在初始化时进行端口校验,利用Spring的Singleton模式实现单例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FactoryBean

Spring3.0开发,FactoryBean开始支持泛型,接口声明改为FactoryBean的形式。

T getObject() throws Exception;
Class<?> getObjectType();
boolean isSingleton();
  1. 返回由FactoryBean创建的Bean实例。如果isSingleton()返回true,则该实例会放到Spring容器的单实例缓存池中。
  2. 确认由FactoryBean创建的Bean的作用域是Singleton还是prototye
  3. 返回FactoryBean创建Bean的类型

有FactoryBean的好处:
一般情况下,Spring通过反射机制利用<bean>属性的class属性执行实现类实例化Bean。在某些情况下,实例化Bean的过程比较复杂,配置方法的灵活性受限制。这是Spring为此提供了一个FactoryBean工程类接口,用户可以通过实现该工厂类接口定制实例化Bean逻辑。

InitializingBean

实现InitializingBean接口的作用
afterPropertiesSet 和init-method之间的执行顺序是afterPropertiesSet 先执行,init-method 后执行。从BeanPostProcessor的作用,可以看出最先执行的是postProcessBeforeInitialization,然后是afterPropertiesSet,然后是init-method,然后是postProcessAfterInitialization

初始化JedisCluster Bean

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

private static JedisCluster jedisCluster = ((JedisCluster)SpringContextHolder.getBean("jedisCluster"));

好处

  1. 完成Jedis初始化时有端口的校验逻辑
  2. 利用了Spring天然的单例模式Singleton,在容器启动的时候实例化Singleton的Bean
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值