解释afterPropertiesSet方法的用处

解释afterPropertiesSet方法的用处

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

("GaGa")
public class GaGa implements InitializingBean {
    private A a;

    public GaGa (A a) {
        this.a = a;
    }

    
    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;
    }

你可能感兴趣的:(杂记,java,数据库,redis,intellij-idea,ide)