web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring/applicationContext.xml/</param-value>
</context-param>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<bean id="springContextHolder" class="com.joethina.common.SpringContextHolder"/>
</beans>
SpringContextHolder.java
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class SpringContextHolder implements ApplicationContextAware{
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextHolder.applicationContext = applicationContext;
}
@SuppressWarnings("unchecked")
public static <T> T getBean(String name) {
return (T)applicationContext.getBean(name);
}
public static <T> T getBean(Class<T> requireType) {
return (T)applicationContext.getBean(requireType);
}
public static ApplicationContext getApplicationContext() {
return SpringContextHolder.applicationContext;
}
}
获取applicationContext的测试类
import org.springframework.context.ApplicationContext;
import com.joethina.common.SpringContextHolder;
public class Test1 {
public static void main(String[] args) {
//Object bean = SpringContextHolder.getBean("sss");
ApplicationContext applicationContext = SpringContextHolder.getApplicationContext();
System.out.println(applicationContext);
}
}
报错如下:
null
Exception in thread "main" java.lang.NullPointerException
at com.joethina.common.SpringContextHolder.getBean(SpringContextHolder.java:18)
at com.joethina.test.Test1.main(Test1.java:12)
各路大神帮忙看下,万分感谢。。
<p>你测试的代码没有起ApplicationContext,你启动你的Servlet容器,就能获取到了。</p>
<div class='ref'><h4>引用来自“yongk”的评论</h4><p>你测试的代码没有起ApplicationContext,你启动你的Servlet容器,就能获取到了。</p>
<div class='ref'><div class='ref'><h4>引用来自“yongk”的评论</h4><p>你测试的代码没有起ApplicationContext,你启动你的Servlet容器,就能获取到了。</p>
我觉得是加载顺序的问题,你看下setContext和getBean执行顺序就知道了
根本不是一个运行环境,我也是醉了。。。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。