额外接口总结

1        BeanPostProcessor

        在bean的初始化前后可增加一些处理逻辑,实现这个接口需要实现两个方法;分别用在bean初始化前和后执行;

        场景:对配置文件中加密的数据库密码进行解密

@Component
public class MyBeanPostProcessor implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("Before Initialization: " + beanName);
        return bean; // 可以对bean进行修改
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("After Initialization: " + beanName);
        return bean; // 可以对bean进行修改
    }
}

2        @ConditionalOnProperty

        配置文件中有feature.enabled,且值为true时,才会加载此MyRedisConfig

        设置多个,就代表多重判断 ;

@Configuration
@ConditionalOnProperty(name = "feature.enabled", havingValue = "true")
//@ConditionalOnProperty(name = "feature.enabled2", havingValue = "true")
public class MyRedisConfig {

    /**
     * 避免存储的key乱码,hash结构依旧会乱码
     * @param factory
     * @return
     */
    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(factory);

        // 自定义的string序列化器和fastjson序列化器
        StringRedisSerializer redisSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(redisSerializer);
        redisTemplate.setValueSerializer(redisSerializer);

        GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
        // hash 序列化,   todo 否则塞进去的值只有java客户端能拿到,去命令界面无法get到
        redisTemplate.setHashKeySerializer(redisSerializer);
        redisTemplate.setHashValueSerializer(jsonRedisSerializer);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值