Установите Red Session Redis только на производство - PullRequest
0 голосов
/ 11 января 2019

Можно ли установить модуль перерисовки данных сеанса Spring только для профиля production?

Я пытался использовать @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 голосов
/ 11 января 2019

Я решил проблему с помощью этой статьи .

Конфигурация производственного сеанса будет выглядеть следующим образом.

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