是否可以仅在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
答案 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})