是否可以仅在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
我已经用这篇文章解决了这个问题。
生产会话配置将如下所示。
@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})