仅在生产中设置Spring Session Redis

问题描述 投票:0回答:1

是否可以仅在production概要文件上设置Spring会话数据redis模块?

我尝试使用@Profile但是AbstractHttpSessionApplicationInitializer在设置profile/environment之前已初始化,因此会给我NoSuchBean异常

NoSuchBeanDefinitionException: No bean named 'springSessionRepositoryFilter' available

当我尝试使用@Values注入配置文件时,它将返回空值。

@Value("${spring.profiles.active:local}")
private String activeProfile; // result is null
spring-boot spring-session spring-data-redis spring-profiles
1个回答
0
投票

我已经用这篇文章解决了这个问题。

生产会话配置将如下所示。

@Configuration
@ConditionalOnProperty(name = "spring.profiles.active", havingValue = "production")
@EnableRedisHttpSession
@ConfigurationProperties(prefix = "redis.db")
public class ProductionSessionConfig {

    @Setter
    private String server;
    @Setter
    private Integer port;

    @Bean
    public JedisConnectionFactory connectionFactory() {
        //creates your own connection
        RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(server, port);
        return new JedisConnectionFactory(config);
    }

}

而且,如果您不打算在其他环境中使用spring-session-data-redis 。 您可以继续。 只要记住@ConditionalOnProperty值即可。

并且不要忘记排除会话的自动配置。

@SpringBootApplication(exclude = {SessionAutoConfiguration.class})
© www.soinside.com 2019 - 2024. All rights reserved.