关于这一点,网上有相当多的博客讲解。但是,我在使用的时候,还是遇到的不小的问题。

先说说背景。我在会议上的监听器中需要使用的服务层的方法。但是,我的服务层使用的是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);

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐