解释afterPropertiesSet方法的用处

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 解释afterPropertiesSet方法的用处

解释afterPropertiesSet方法的用处

在spring的bean的生命周期中,实例化->生成对象->属性填充后会进行afterPropertiesSet方法,这个方法可以用在一些特殊情况中,也就是某个对象的某个属性需要经过外界得到,比如说查询数据库等方式,这时候可以用到spring的该特性,只需要实现InitializingBean即可:

@Component("GaGa")
public class GaGa implements InitializingBean {
    private A a;
    public GaGa (A a) {
        this.a = a;
    }
    @Override
    public void afterPropertiesSet() throws Exception {
    }
}

这样可以在afterPropertiesSet方法中进行你的额外操作,可以在这里为属性A进行赋值


spring boot reids中RedisTemplate类中就使用afterPropertiesSet

自己写redis链接模板最后就使用:template.afterPropertiesSet();


RedisTemplate源码(在里面设置一些默认属性):

public void afterPropertiesSet() {
        super.afterPropertiesSet();
        boolean defaultUsed = false;
        if (this.defaultSerializer == null) {
            this.defaultSerializer = new JdkSerializationRedisSerializer(this.classLoader != null ? this.classLoader : this.getClass().getClassLoader());
        }
        if (this.enableDefaultSerializer) {
            if (this.keySerializer == null) {
                this.keySerializer = this.defaultSerializer;
                defaultUsed = true;
            }
            if (this.valueSerializer == null) {
                this.valueSerializer = this.defaultSerializer;
                defaultUsed = true;
            }
            if (this.hashKeySerializer == null) {
                this.hashKeySerializer = this.defaultSerializer;
                defaultUsed = true;
            }
            if (this.hashValueSerializer == null) {
                this.hashValueSerializer = this.defaultSerializer;
                defaultUsed = true;
            }
        }
        if (this.enableDefaultSerializer && defaultUsed) {
            Assert.notNull(this.defaultSerializer, "default serializer null and not all serializers initialized");
        }
        if (this.scriptExecutor == null) {
            this.scriptExecutor = new DefaultScriptExecutor(this);
        }
        this.initialized = true;
    }
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
Java
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
文章详细解释了Java关键字`super`的用途,包括访问父类的成员变量、调用父类的构造方法和方法,并提供了相应的代码实例。
176 5
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
|
2月前
|
Java
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
本文介绍了Java中this和super关键字的用法,包括在构造方法中使用this来区分参数和成员变量、使用super调用父类构造方法和方法,以及它们在同一个方法中同时使用的场景。
154 0
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
|
4月前
|
安全 数据安全/隐私保护
解释 TCSEC 和 ITSEC
【8月更文挑战第31天】
178 0
|
6月前
|
编译器 C++
《Effective C++ 改善程序与设计的55个具体做法》 第二章 构造/析构/赋值运算 笔记
《Effective C++ 改善程序与设计的55个具体做法》 第二章 构造/析构/赋值运算 笔记
|
7月前
|
Java
注释之背后:代码的解释者与保护者
注释之背后:代码的解释者与保护者
42 0
|
程序员 C语言 Windows
计算机程序的构造和解释 - 个人笔记(一)
学习任何语言思想最重要的是思想本身,而scheme由于语言天生的自由性,可以极大的发挥程序员的思想空间
119 0
|
安全 Java 编译器
java泛型的用法和详细的解释
java泛型的用法和详细的解释
if引导的选择语句,解释和例子
if引导的选择语句,解释和例子
110 0
|
SQL 测试技术
软件测试面试题:解释以下函数及他们的不同之处?
软件测试面试题:解释以下函数及他们的不同之处?
78 0

热门文章

最新文章