srping mvc 集成CXF 导致类初始化两遍

cxf依赖于spring的ContextLoaderListener,而spring mvc 则依赖于DispatcherServlet。

初始化DispatcherServlet的时候会依赖初始化一个spring 容器,此容器为spring全局容器WebApplicationContext的子容器,如果调用相同的配置文件初始化将导致所有类初始化两次,造成不确定的错误。

spring的字容器可以访问父容器内的对象,既然如此,可以让全局容器加载除Controller层以外的类,而让spring mvc容器加载Controller层的类,来解除此问题。

具体配置实现:

全局spring包扫描配置:

<context:component-scan base-package="com.blackbread">
        <!-- 不加载org.springframework.stereotype.Controller类型注解 -->
        <context:exclude-filter type="annotation"
            expression="org.springframework.stereotype.Controller" />
    </context:component-scan>

spring mvc 包扫描配置:

<context:component-scan base-package="com.blackbread"
        use-default-filters="false">
        <!-- 只载org.springframework.stereotype.Controller类型注解 -->
        <context:include-filter type="annotation"
            expression="org.springframework.stereotype.Controller" />
    </context:component-scan>

在web.xml中分别加载不同的配置文件,即可解决所有类加载两遍问题。

srping mvc 集成CXF 导致类初始化两遍

时间: 2024-11-07 19:57:45

srping mvc 集成CXF 导致类初始化两遍的相关文章

tomcat启动项目被重新加载,导致资源初始化两遍

之前没有遇到过这个问题,配了三天的项目了,惊人啊!!!各种怪问题全被我赶上了.真有种骂人的冲动. tomcat启动项目时,项目资源被加载两遍. 原因:配置虚拟目录导致,项目被重新加载. <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespa

Tomcat启动时项目重复加载,导致资源初始化两次的问题

最近在项目开发测试的时候,发现Tomcat启动时项目重复加载,导致资源初始化两次的问题 导致该问题的原因: 如下图:在Eclipse中将Server Locations设置为"Use Tomcat installation(takes control of Tomcat installation)"时, 就会导致该问题! 根本原因: 解决方法一: 把server.xml中的context删除掉 但这会导致一个问题: 在Web Modules中你将看不到我们的项目 解决方法二: 在Tom

Tomcat启动时项目重复加载,导致资源初始化两次!

一.现象: 每次启动Tomcat 的时候,工程会被加载两次 二.原因: 在tomcat/conf/server.xml配置虚拟目录引起,如下配置: 我们在Host标签里配置了appBase="webapps",tomcat会去加载一次应用. 在<Context>里配置了一次docBase,tomcat会又去加载一次引用. 导致项目会加载二次. 三.解决: 去掉appBase="webapps"即可! <Host name="localho

验证当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。

结果:当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行.

Spring MVC集成slf4j-logback

1.  Spring MVC集成slf4j-log4j 关于slf4j和log4j的相关介绍和用法,网上有很多文章可供参考,但是关于logback的,尤其是Spring MVC集成logback的,就相对少一些了,而且其中一些也有着这样那样的问题.进入正题之前先简单介绍下Spring MVC集成slf4j-log4j的过程,如下: 1)      在pom.xml文件中添加slf4j-log4j的依赖,完成后的classpath中将新增三个jar包,分别是:slf4j-api.jar.log4j

基于Maven在Spring中集成CXF Web Service框架

引言: 在跨系统和跨平台的系统通信中,WebService是一个事实上的标准,其以平台无关性,获得了广泛的应用.本文将讲述如何基于Spring来集成CXF,并开发出第一个Hello World的应用. 1.  Web Service是什么? Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. Web Service技术, 能使

initWithNibName导致的初始化问题

众所周知,IB在加载nib的过程中存在着一些undocument行为,有的行为确实是不可理喻的,因此程序员对IB产生了抗拒心理. 今天我们要介绍的是IB导致的一个奇特行为.通过本文的描述, 作者完美地展示了IB给面向对象所带来的破坏作用. 我们有两个View Controller,暂名为superclass和subclass.subclass继承了superclass.在superclass的initWithNibName初始化方法中,我们这样写道: self = [super initWith

c++ 类初始化

一. 成员初始化列表的位置. 成员初始化列表的位置位于构造函数的函数体和参数表之间.构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式,初始化式可以是表达式.派生类构造函数的形参还有其余常量. 通过成员初始化表,类数据成员可以被显式初始化.成员初始化表是由逗号分隔的成员/名字实参对.例如下面的双参数构造函数的实现就使用了成员初始化表. _name是string 型的成员类对象. Account::Account( const char*

C++——类继承以及类初始化顺序

对于类以及类继承, 几个主要的问题:1) 继承方式: public/protected/private继承. 这是c++搞的, 实际上继承方式是一种允许子类控制的思想. 子类通过public继承, 可以把基类真实还原, 而private继承则完全把基类屏蔽掉. 这种屏蔽是相对于对象层而言的, 就是说子类的对象完全看不到基类的方法, 如果继承方式是private的话, 即使方法在基类中为public的方法. 但继承方式并不影响垂直方向的访问特性, 那就是子类的函数对基类的成员访问是不受继承方式的影