关于如何获取到spring容器中的bean类
关于这一点,网上有相当多的博客讲解。但是,WO我在使用的时候,还是遇到的不小的问题。先说说背景。我在会议上的监听器中需要使用的服务层的方法。但是,我的service层使用的是ioc。一开始,不管怎么new,都会报控制错误。仔细想了想,我是在toncat容器中获取spring容器中的东西。不在同一个容器,应该不能直接new获得。在网上,很多人...
·
关于这一点,网上有相当多的博客讲解。但是,我在使用的时候,还是遇到的不小的问题。
先说说背景。我在会议上的监听器中需要使用的服务层的方法。但是,我的服务层使用的是ioc。一开始,不管怎么新,都会报空值错误。仔细想了想,我是在tomcat容器中获取spring容器中的东西。不在同一个容器,应该不能直接新获得。
在网上,很多人推荐使用ApplicationContext的getbean方法获得bean。但是,会报找不到一个配置文件错误。但是这个配置文件我是有的。因此就很头疼。在进过很多尝试之后,我找到了问题所在。因为spring的配置文件我不是放在默认的位置,所以tomcat在找的时候找不到。因此,我们在web.xml中配置一下context-param的路径就可以了。还有一种方法。之所以会报这个错,是因为我们尝试获得到applicationcontext。那么,我们换一个方法获取,不就可以避免了吗。因此我们在spring同期中配置如下的一个bean类,在里面写一个静态方法。
/*
*这个注解是一定要的不然当spring初始化的时候不会注入ApplicationContext对象的,
*当然也可以配置在spring中的bean中*/
@Component
public class GETApplicationContext implements ApplicationContextAware{
private static ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext arg0)
{
applicationContext = arg0;
}
public static ApplicationContext getApplicationContext(){
return applicationContext;
}
}
通过这个方法,也可以成功。
ApplicationContext ctx = GETApplicationContext.getApplicationContext();
service=(loginservice)ctx.getBean(LoginService.class);
更多推荐
已为社区贡献1条内容
所有评论(0)