spring-mvc - 多个 ContextLoader* 定义
问题描述
public class SpringMVCWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { LoginApplicationConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
public class Initializer extends AbstractHttpSessionApplicationInitializer {
public Initializer() {
super(Config.class);
}
}
如何在不进行多个 ContextLoader* 定义的情况下同时使用 SessionManager 和 AbstractAnnotationConfigDispatcherServletInitializer?
解决方案
在使用 Spring MVC 并初始化多个初始化程序时,我遇到了同样的问题。将两者分成不同的类并用 Spring @Order(value)注释它们
这将首先被初始化。这AbstractAnnotationConfigDispatcherServletInitializer
将启动 servlet 应用程序上下文以及根应用程序上下文。
import org.springframework.core.annotation.Order;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
@Order(1)
public class Init extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override protected Class<?>[] getRootConfigClasses() {
return new Class[]{Config.class};
}
@Override protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override protected String[] getServletMappings() {
return new String[]{"/*"};
}
}
这将被注释为@Order(2)
This is the second initialisation for Session 初始化类 AbstractHttpSessionApplicationInitializer
将确保 servlet 将使用 springSessionRepositoryFilter 来处理负责用 Redis 支持的自定义实现替换 HttpSession 实现的每个请求更多详细信息。
import org.springframework.core.annotation.Order;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
@Order(2)
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 600)
public class SessionInit extends AbstractHttpSessionApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException
{
super.onStartup(servletContext);
}
}
推荐阅读
- database - 数据库设计模型实体关系图 n-entities 与 1:m 实体的关系 - 最佳实践
- java - 更改自定义 JButton 单击的值
- angular - ngx-translate angular5 自定义元素
- c++ - 如何计算正确的大小以复制到蹦床上
- npm - 为什么 package-lock.json 会用通用版本更新?
- c++17 - 在项目中仅具有 C++17 兼容性是否安全?
- javascript - 基于 slate.js 的 reactjs 富文本编辑器逆向工程
- python - 为什么在 Python 2 和 Python 3 中打开和迭代文件句柄的速度是 Python 3 的两倍?
- android - findViewById 在 4.4.2 中返回 null 但在 7.1.1 中有效
- r - 从r中的不同表中减去不同的列