Java Spring MVC初始化对象
在我的SpringMVC项目中,我需要某种策略来调用一个类,该类解析拥有我的RMI服务器ip和端口的xml文件&url必须与servletContext url相对:Java Spring MVC初始化对象,java,spring,jsp,spring-mvc,servlet-3.0,Java,Spring,Jsp,Spring Mvc,Servlet 3.0,在我的SpringMVC项目中,我需要某种策略来调用一个类,该类解析拥有我的RMI服务器ip和端口的xml文件&url必须与servletContext url相对: HttpServletRequest request; request.getServletContext().getRealPath("/WEB-INF/LABLAB/RMI-Config.xml") 我想在tomcat中启动应用程序时加载这些类,而不是在调用控制器类时加载,因为我的应用程序依赖于我的RMI,所以在做任
HttpServletRequest request;
request.getServletContext().getRealPath("/WEB-INF/LABLAB/RMI-Config.xml")
我想在tomcat中启动应用程序时加载这些类,而不是在调用控制器类时加载,因为我的应用程序依赖于我的RMI,所以在做任何其他事情之前,我必须解析我的文件&使用IP和端口字段开始连接到我的RMI,然后调用RMI方法来稍后执行一些操作
现在
我该怎么做?请告诉我如何初始化HttpServletRequest的实例,并在我不在控制器类上时给出初始值
谢谢您需要实现
ServletContextListener
接口,并从web.xml
中引用它:
<listener>
<listener-class>InitializingListener</listener-class>
</listener>
初始化侦听器
该接口有一个contextInitialized(ServletContextEvent sce)
方法,在该方法中可以调用sce.getServletContext()
,因此不需要HttpServletRequest
如果这不起作用,因为您还需要从初始化类访问一些SpringBean,那么请忘记实现ServletContextListener
接口,改为执行以下操作:
ServletContextAware
。这将导致Spring将ServletContext
注入到您的类中init-method
bean属性,或者定义一个@PostConstruct
带注释的方法)depends-on
bean属性,使所有控制器bean依赖于初始化bean。因此,初始化bean将在任何控制器bean之前创建如果没有最后一步,就不能保证控制器在初始化bean完成其工作之前不会开始处理请求。但是,在每个控制器bean上指定
依赖于
属性也是有问题的,特别是它们通常是通过应用@controller
注释而不是xml配置创建的。中描述了一个很好的解决方法。如果您正在使用Spring,那么您可以创建一个类并实现它。如果您想获得ServletContext
,可以在初始化bean中简单地使用@Autowired
注释。例如:
@Component
public class SomeBean implements InitializingBean {
@Autowired
private ServletContext context;
public void afterPropertiesSet() throws Exception {
String path = context.getRealPath("/WEB-INF/LABLAB/RMI-Config.xml");
//do something.
}
}
根据文件:
InitializingBean—由需要
一旦BeanFactory设置了它们的所有属性,就进行反应
或者看一下如何使用
ServletContextListener
执行此操作。您可以参考此问题吗?我用了你的方法,但那对我不起作用:你能参考这个问题吗?我使用了你的方法,但那对我不起作用: