配置spring 项目时遇到的问题

原创 2015年11月21日 10:37:54
今天在做一个小项目时,使用了spring,但是在项目启动过程中,一直会把我的一个监听启动2次,这个监听实现了2个接口,其中一个是spring的ApplicatinListener
@Component
public class BlackManagerInitListener implements ServletContextListener,
		ApplicationListener<ContextRefreshedEvent> {
	private static Logger logger = Logger
			.getLogger(BlackManagerInitListener.class);
	
	private static volatile boolean  bThreadStarted;

	@Autowired
	private BlacklistDao dao;

	@Override
	public void contextInitialized(ServletContextEvent event) {
		logger.info("加载配置信息:开始......");
		String realPath = event.getServletContext().getRealPath("/");
		ConfigUtils.setPath(realPath);
		logger.info("加载配置信息:完成......");
		ConfigUtils.addOrUpdateBlicklist(Constant.OPENBLACKLIST_KEY, Constant.OPENBLACKLIST_VALUE, null);
	}

	@Override
	public void contextDestroyed(ServletContextEvent sce) {

	}

	@Override
	public void onApplicationEvent(ContextRefreshedEvent event) {
		//启动 处理线程
		if (!bThreadStarted) {
			bThreadStarted = true;
			List<BlacklistFilterKey> list = dao.queryFilterKey();
			StringBuffer value = new StringBuffer();
			String realValue = null;
			for (BlacklistFilterKey blacklistFilterKey : list) {
				value.append(blacklistFilterKey.getKeyName()).append(":").append(blacklistFilterKey.getStatus()).append("|");
			}
			if(value.length()>0){
				realValue = value.substring(0, value.length()-1);
			}
			ConfigUtils.addOrUpdateBlicklist(Constant.BLICKLIST_FILTERKEY, realValue, null);
		
			
			BlicklistThread thread = new BlicklistThread(dao);
			thread.start();
		}
	}
	
}


然后在web.xml中,我配置了2个不同的监听

<!-- 初始化监听器 -->
 	<listener>
		<listener-class>com.shijie99.blacklistManager.listener.BlackManagerInitListener</listener-class>
	</listener>

            <!-- spring -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
原本以为没有问题,但是经过多次的测试后,发现在启动spring的监听时,它会去搜索是否有实现过它的监听,如果实现了的话,就会再次加载该监听,所以导致了2次监听的重复启动,

解决办法就是只启动自己的监听,而不去启动spring的监听,而spring的配置修改为:

<servlet>
		<servlet-name>spring</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath*:spring.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>spring</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>


版权声明:本文为博主原创文章,未经博主允许不得转载。

项目中Angularjs遇到的问题和优化总结

项目中Angularjs遇到的问题和优化总结由于本项目最低需要兼容ie8浏览器,所以在版本选择上选择Angularjs1.2版本。1.ng-if/ng-switch与ng-show/ng-hide区别...
  • summer7310
  • summer7310
  • 2017年02月26日 15:30
  • 1211

第一个java Web项目中遇到的问题(上)

前两天开始学习J2EE,没有JavaWeb的任何经验,就靠着之前学习的一点点java知识在那撑着,才照着书上码了一个小Demo,过程中却果然问题多多。。。值得庆幸的是靠着各种折腾,现在解决了部分,这些...
  • sinat_33587403
  • sinat_33587403
  • 2016年03月17日 21:42
  • 1727

SSM整合中遇到的问题总结

最近在用SSM框架,使用过程中遇到的问题,就本博客做一个总结: 1.struts2不是所有情况下都支持pojo的 struts2本身是支持pojo的,即当以account.name形式的参数进行h...
  • g414917512
  • g414917512
  • 2015年11月27日 11:00
  • 1630

配置spring boot项目可能出现的问题

1.配置好maven的系统环境变量 2.创建好文件夹,在该文件夹命令行输入 mvn archetype:generate -DgroupId=com.front.ProductService -D...
  • draven1994
  • draven1994
  • 2017年11月21日 18:28
  • 32

Spring boot项目maven的profile多环境配置不自动替换变量的问题解决

原文地址:http://www.07net01.com/2017/04/1842360.html 在网上找了好久,配置都很简单,可是我的程序就是不能自动替换变量,最终单独测试,发现原来是引用spri...
  • tanga842428
  • tanga842428
  • 2017年06月21日 16:00
  • 2204

基于maven管理的项目中spring+mybatis配置数据源读取不到properties属性文件的问题

此时,启动会报异常,${jdbc.driver}这样的表达式获取不到properties里面的值,因为MapperScannerConigurer实际是在解析加载bean定义阶段的,这个时候要是设置s...
  • a925907195
  • a925907195
  • 2015年05月14日 23:38
  • 4117

Spring项目中使用Junit单元测试并配置数据源的问题

一、问题描述由于公司项目中的数据源是配置在Tomcat中的server.xml中的,所以在使用Junit进行单元测试的时候,无法获取数据源。 二、解决方案由于项目集成了Spring的自动注入等功能,所...
  • t894690230
  • t894690230
  • 2015年12月29日 16:43
  • 4797

Spring Mvc 配置web.xml中的servlet-mapping时遇到的问题

今天在优化一个项目,因为是优化所以会有很多对原有代码的调整。对Spring mvc配置的路径进行了配置如下:修改前 appServlet /smart/* ...
  • wobpaa
  • wobpaa
  • 2016年12月11日 17:32
  • 331

Spring配置web.xml文件时遇到的问题

Could not open ServletContext resource [/WEB-INF/petstore-servlet.xml] 这是我第一次试验spring第一个页面跳转时候碰到的问题,...
  • gotobar
  • gotobar
  • 2015年02月28日 21:38
  • 426

SSH 项目过程中遇到的问题和解决方法汇总 struts2 spring hibernate

问题:struts如何传递数据到jsp? 答案: Struts的action传参给jsp:可以用传统的在request/session中加入参数的方法 也可以:     (persons是a...
  • jayshe100xin
  • jayshe100xin
  • 2014年01月01日 16:20
  • 903
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:配置spring 项目时遇到的问题
举报原因:
原因补充:

(最多只允许输入30个字)