我不是一个Spring https://spring.io/亲,所以请耐心等待......
我有三门课:
class SpringBeanA {
public aMethod() {
.....
}
}
class SpringBeanB {
@Autowired SpringBeanA a;
public bMethod() {
a.method();
}
}
class NONSpringClass {
.....
b.method();
.....
}
b.method()
通过实例访问时都会出现空指针错误SpringBeanB b = new SpringBeanB()
并将 SpringBeanB 自动装配到 NONSpringClass。
自动装配:
class NONSpringClass {
@Autowired SpringBeanB b;
.....
b.method();
.....
}
怎样才能成功调用b.method()
?
Spring初始化所有对象并将其保存在Spring应用程序上下文中。您有几种不同的方法可以访问应用程序上下文中的对象
首先创建一个 spring 配置类,将 ApplicationContext 注入到私有属性中,并公开为静态方法。
@Configuration
class StaticApplicationContext implements ApplicationContextAware{
static ApplicationContext applicationContext = null;
public void setApplicationContext(ApplicationContext context) throws BeansException {
applicationContext = context;
}
/**
* Note that this is a static method which expose ApplicationContext
**/
public static ApplicationContext getContext(){
return applicationContext;
}
}
现在你可以在非春季课程中尝试这个,
((SpringBeanB)StaticApplicationContext.getContext.getBean("b")).bMethod();
请记住,在 Spring 上下文初始化之前调用 getContext 方法可能会导致 NullPointerException。另外,访问 spring 容器外部的 beans 也不是推荐的方法。理想的方法是将所有 bean 移至 spring 容器中进行管理。
如果您想从 java Servlet 访问 Spring 应用程序上下文,请参阅WebApplicationContextUtils http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/context/support/WebApplicationContextUtils.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)