因需求在項目中增加了項目啟動時執(zhí)行的方法,但是由于web.xml中的配置必須有ContextLoaderListener和DispatcherServlet 所以項目啟動時在創(chuàng)建對象時和對象注入時會執(zhí)行兩次該方法
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 防止Spring內(nèi)存溢出監(jiān)聽器 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
調(diào)出棧方法顯示如下:
Thread.st=====================java.lang.Thread.getStackTrace(Thread.java:1559)
Thread.st=====================com.mortgage.controller.init.InitQuery.queryAK(InitQuery.java:25)
Thread.st=====================sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Thread.st=====================sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Thread.st=====================sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Thread.st=====================java.lang.reflect.Method.invoke(Method.java:498)
Thread.st=====================org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366)
Thread.st=====================org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:311)
Thread.st=====================org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:134)
Thread.st=====================org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
Thread.st=====================org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1581)
Thread.st=====================org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
Thread.st=====================org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
Thread.st=====================org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
Thread.st=====================org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
Thread.st=====================org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
Thread.st=====================org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
Thread.st=====================org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)
Thread.st=====================org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
Thread.st=====================org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
Thread.st=====================org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)
Thread.st=====================org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326)
Thread.st=====================org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
Thread.st=====================org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4633)
Thread.st=====================org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5095)
Thread.st=====================org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
Thread.st=====================org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1425)
Thread.st=====================org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1415)
Thread.st=====================java.util.concurrent.FutureTask.run(FutureTask.java:266)
Thread.st=====================org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
Thread.st=====================java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
Thread.st=====================org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941)
Thread.st=====================org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839)
Thread.st=====================org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
Thread.st=====================org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1425)
Thread.st=====================org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1415)
Thread.st=====================java.util.concurrent.FutureTask.run(FutureTask.java:266)
Thread.st=====================org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
Thread.st=====================java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
Thread.st=====================org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941)
Thread.st=====================org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:258)
Thread.st=====================org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
Thread.st=====================org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
Thread.st=====================org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
Thread.st=====================org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770)
Thread.st=====================org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
Thread.st=====================org.apache.catalina.startup.Catalina.start(Catalina.java:657)
Thread.st=====================sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Thread.st=====================sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Thread.st=====================sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Thread.st=====================java.lang.reflect.Method.invoke(Method.java:498)
Thread.st=====================org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
Thread.st=====================org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
啟動
十一月 20, 2017 2:35:16 下午 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring FrameworkServlet 'SpringMVC'
Thread.st=====================java.lang.Thread.getStackTrace(Thread.java:1559)
Thread.st=====================com.mortgage.controller.init.InitQuery.queryAK(InitQuery.java:25)
Thread.st=====================sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Thread.st=====================sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Thread.st=====================sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Thread.st=====================java.lang.reflect.Method.invoke(Method.java:498)
Thread.st=====================org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366)
Thread.st=====================org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:311)
Thread.st=====================org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:134)
Thread.st=====================org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
Thread.st=====================org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1581)
Thread.st=====================org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
Thread.st=====================org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
Thread.st=====================org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
Thread.st=====================org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
Thread.st=====================org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
Thread.st=====================org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
Thread.st=====================org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)
Thread.st=====================org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
Thread.st=====================org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
Thread.st=====================org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668)
Thread.st=====================org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634)
Thread.st=====================org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682)
Thread.st=====================org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553)
Thread.st=====================org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494)
Thread.st=====================org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
Thread.st=====================javax.servlet.GenericServlet.init(GenericServlet.java:158)
Thread.st=====================org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1174)
Thread.st=====================org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1090)
Thread.st=====================org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:980)
Thread.st=====================org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4819)
Thread.st=====================org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5129)
Thread.st=====================org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
Thread.st=====================org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1425)
Thread.st=====================org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1415)
Thread.st=====================java.util.concurrent.FutureTask.run(FutureTask.java:266)
Thread.st=====================org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
Thread.st=====================java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
Thread.st=====================org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941)
Thread.st=====================org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839)
Thread.st=====================org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
Thread.st=====================org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1425)
Thread.st=====================org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1415)
Thread.st=====================java.util.concurrent.FutureTask.run(FutureTask.java:266)
Thread.st=====================org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
Thread.st=====================java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
Thread.st=====================org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941)
Thread.st=====================org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:258)
Thread.st=====================org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
Thread.st=====================org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
Thread.st=====================org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
Thread.st=====================org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770)
Thread.st=====================org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
Thread.st=====================org.apache.catalina.startup.Catalina.start(Catalina.java:657)
Thread.st=====================sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Thread.st=====================sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Thread.st=====================sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Thread.st=====================java.lang.reflect.Method.invoke(Method.java:498)
Thread.st=====================org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
Thread.st=====================org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
啟動
從上代碼中可看到執(zhí)行兩次的具體情況 經(jīng)查閱 有人說將@Component注解改為@Service注解即可 但嘗試后發(fā)想并沒有起作用 而且由于本項目不能注掉ContextLoaderListener 故想知道如果解決此問題
后經(jīng)過排查發(fā)現(xiàn)原因還是掃描了兩遍`<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-servlet.xml,classpath:spring-shiro.xml,classpath:spring-redis.xml</param-value>
</context-param>` 以及 `<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-servlet.xml</param-value>
</init-param>` 后將ContextLoaderListener注掉并將其掃描都放進DispactherServlet下啟動變?yōu)橐淮?/code>北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。