gpt4 book ai didi

java - Spring MVC 项目的可选 redis session 存储

转载 作者:行者123 更新时间:2023-12-02 11:20:33 25 4
gpt4 key购买 nike

我想使用 spring-session 将用户的 session 数据存储在一个中央位置,例如 Redis 服务器,以实现负载平衡,而不需要粘性 session 。

Spring 只需几行即可支持此功能:

Config.java

@EnableRedisHttpSession 
public class Config {

@Bean
public JedisConnectionFactory connectionFactory() {
return new JedisConnectionFactory();
}

}

Initializer.java

public class Initializer
extends AbstractHttpSessionApplicationInitializer {
}

但是,现在我在所有开发环境以及所做的每一个部署中都与 Redis 紧密耦合。我可能只想在该软件的一项高流量部署中使用 Redis。

我尝试使用 Spring Profiles(将 @Profile("redissessions") 添加到 Config.java),但是我无法告诉我的 servlet 容器不接收Initializer.java(如果通过@Profile排除Config.java,则会导致应用程序无法启动)。

我想要的最终结果就像我将 @Profile("redissessions") 放在 Initializer.java 类上(我认为这是不可能的) )或者有什么我可以交换 JedisConnectionFactory 的东西,它将委托(delegate)给某种内部(或 servlet 容器)机制吗?

最佳答案

在我正在从事的项目中,我必须这样做来处理 Redis 和无 Redis 之间的切换。

此文件仅替换您拥有的“Initializer.java”文件,另一个文件仍然相同,但您必须添加@Profile(“nameOfYourProfileForUseRedis”)。

@Configuration
public class AppInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer {

@Override
public void onStartup(ServletContext servletContext) throws ServletException
{
WebApplicationContext webAppContext = getContext();

// Inicializacion de Filtro para Redis
if("redis".equalsIgnoreCase(props.getProperty("spring.profiles.active"){
addSpringSessionRepositoryFilter(servletContext, webAppContext);
}

public void addSpringSessionRepositoryFilter(ServletContext servletContext,
WebApplicationContext webAppContext) {
FilterRegistration.Dynamic springSessionFilter =
servletContext.addFilter("springSessionRepositoryFilter",
new DelegatingFilterProxy("springSessionRepositoryFilter",
webAppContext));
springSessionFilter.addMappingForUrlPatterns(null, true, "/*");
System.out.println("Inicializacion de Filtro para Redis");
}

关于java - Spring MVC 项目的可选 redis session 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35233911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com