中易网

发个技术问题,怎么在任意一个普通java类中获得spring的容器,这个java类不做任何配置?

答案:3  悬赏:20  
解决时间 2021-01-18 09:03
  • 提问者网友:斑駁影
  • 2021-01-17 09:39
发个技术问题,怎么在任意一个普通java类中获得spring的容器,这个java类不做任何配置?
最佳答案
  • 二级知识专家网友:行雁书
  • 2021-01-17 11:08
写一个监听器即可:

package cn.edu.ynu.s2sh.listener;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import cn.edu.ynu.s2sh.util.ContextUtil;


public class ContextLoaderListener implements ServletContextListener {
public ContextLoaderListener() {
// TODO Auto-generated constructor stub
}


public void contextInitialized(ServletContextEvent arg0) {

ServletContext context = arg0.getServletContext();
try{
//初始化applicationContext, 用于spring 注入的bean
ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(context);
ContextUtil.setContext(ctx);
}catch(Exception ex){
ex.printStackTrace();
}
}

public void contextDestroyed(ServletContextEvent arg0) {

}

}
全部回答
  • 1楼网友:有你哪都是故乡
  • 2021-01-17 11:53
spring容器启动了吗追问web项目已经启动了。追答继承WebApplicationObjectSupport的类要通过spring实例化才能获取吧,你自己实例化的跟web容器也没关系啊
  • 2楼网友:神也偏爱
  • 2021-01-17 11:21
“java.lang.IllegalStateException”指“在非法或不适当的时间调用方法时产生的信号。”换句话说,即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下。getApplicationContext()指的是得到当前的context。追问我需要的是怎么获得,一个普通的java类中,在spring已经启动的情况下,怎么获得?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息