springboot加@EnableRedisHttpSession注解后namespace配置失效

配置和注解是配置的两种方式,加注解后,

  public void setRedisNamespace(String namespace) {
        this.redisNamespace = namespace;
    }

该方法得不到调用,不加注解则SpringBootRedisHttpSessionConfiguration类

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package org.springframework.boot.autoconfigure.session;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.session.SessionProperties.Redis;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.session.SessionRepository;
import org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration;

@Configuration
@ConditionalOnClass({RedisTemplate.class})
@ConditionalOnMissingBean({SessionRepository.class})
@ConditionalOnBean({RedisConnectionFactory.class})
@Conditional({SessionCondition.class})
class RedisSessionConfiguration {
    RedisSessionConfiguration() {
    }

    @Configuration
    public static class SpringBootRedisHttpSessionConfiguration extends RedisHttpSessionConfiguration {
        public SpringBootRedisHttpSessionConfiguration() {
        }

        @Autowired
        public void customize(SessionProperties sessionProperties) {
            Integer timeout = sessionProperties.getTimeout();
            if (timeout != null) {
                this.setMaxInactiveIntervalInSeconds(timeout);
            }

            Redis redis = sessionProperties.getRedis();
            this.setRedisNamespace(redis.getNamespace());
            this.setRedisFlushMode(redis.getFlushMode());
        }
    }
}


会触发setRedisNamespace,当符合上面几个condition的时候会触发,如果加注解,则上面的
RedisOperationsSessionRepository会import,所以不满足

@ConditionalOnMissingBean({SessionRepository.class})


条件,不会触发自定义操作,加注解只能在注解里面加

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值