仅在生产中设置Spring Session Redis

时间:2019-01-11 06:46:01

标签: spring-boot spring-session spring-data-redis spring-profiles

是否可以仅在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

1 个答案:

答案 0 :(得分:0)

我已经使用this article解决了问题。

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

@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})