`
A牛哥哥
  • 浏览: 147405 次
社区版块
存档分类
最新评论

springMVC和spring的包扫描

阅读更多
springmvc 的配置文件 和 spring 的配置文件都可以配置包扫描,如下:

<context:component-scan base-package="com.xxx"/>


一般将controller的扫描配置在springmvc 的配置文件中,将service和dao的扫描配置在spring的配置文件中.
即 springmvc 只扫描controller的包, spring扫描其他组件.

不要让两个扫描有重叠.原因有如下几点(已亲自测试,的确如此):
1, 扫描的类增多, 项目启动时间会延长
2, @PostConstruct 注解标注的方法会执行2次
3, 会使事物失效

对于第三点会使事物失效,原因是什么?
同时使用springmvc 和 spring, 那么项目中就会有两个容器.
spring的是父容器,先进行初始化; springmvc是子容器, 后进行初始化.
springmvc后初始化,会重新创建service对象并重新注入,而springmvc再次创建service对象时不会读取spring的配置文件,因此也就无法知道service层是需要创建代理对象的,所以springmvc创建的service是普通的对象,而不是动态代理对象.

解决重叠扫描的方式
方式1,即上面提到的 springmvc 只扫描controller的包, spring扫描其他组件.
springmvc 配置如下:
<context:component-scan base-package="com.xxx.**.cotroller"/>

springmvc只会扫描com.xxx下任意目录或子目录下的controller包下的类

spring的配置如下:
<context:component-scan base-package="com.xxx.**.service.impl,com.xxx.**.dao"/>


方式2,用<context:include-filter/> 或 <context:exclude-filter/> 指定或排除某些类
假设springmvc扫描如下:
<context:component-scan base-package="com.xxx"/>


spring扫描如下:
<context:component-scan base-package="com.xxx"/>


那么就会重叠,springmvc会扫描service和dao,可以这样修改springmvc的配置:
<context:component-scan base-package="com.xxx">
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context>


用 <context:exclude-filter/> 排除了@Service 和 @Repository 两种注解标注的类,意思是告诉springmvc在扫描时,如果碰到这两个注解标注的类直接忽略,不要创建和注入对象.


方式1比方式2好,扫描的类更少,方式2仅仅是个例子,看起来有点画蛇添足,
故意让springmvc扫描service和dao的包,又告诉他扫描时忽略service和dao,我仅仅是想引出还有<context:include-filter/> 和 <context:exclude-filter/>  这个配置. 有些特殊场景才用得上这个配置.




分享到:
评论

相关推荐

    springMVC+Spring+Mybatis+Maven整合代码案例

    4、搭建spring和mybatis的配置:spring-mybatis.xm(扫描dao)) 5、测试Spring+mybatis的框架搭建,写单元测试JUnit,测试事务配置等:model--&gt;dao(mapper)--&gt;service--&gt;test 6、映入SpringMVC:配置...

    SpringMVC和Spring的配置文件扫描包详解

    主要介绍了SpringMVC和Spring的配置文件扫描包,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下

    ssh框架整合step by step (springMVC + spring 5.0.4 + hibernate 5.0.12)

    ssh框架搭建step by step (springMVC + spring 5.0.4 + hibernate 5.0.12) 好久不弄web了, 周末心血来潮, 使用较新spirng/hibernate搭建一个ssh框架, 供有需要的同学参考/学习/使用. 使用eclipse开发, 搭建,分三步: ...

    springmvc+spring4+mybatis3整合,自动扫描

    springmvc+spring4+mybatis3整合,自动扫描,内无示范,架构搭好,非maven项目

    spring+springmvc+mybatis的整合

    这里就要导入mybatis和spring的整合包了,这里sqlsession中也要导入mybatis的配置文件 2.6 spring-bean 配置mapper自动扫描 MapperScannerConfigurer将扫描basePackage所指定的包下的所有接口类(包括子类), ...

    spring整合springmvc项目

    项目对spring如何整合springmvc进行了详细地注释和介绍,并且包含了很多知识点,比如避免重复扫描包,spring IOC的父子关系和请求筛查等。博客地址:http://blog.csdn.net/qwlzxx/article/details/73732292

    00-myspring_springmvc_spring_ecli_mye_

    手写的一个spring 框架 * 重写init方法, * 实现加载配置文件,读取配置信息 * 扫描所有相关的类, * 初始化相关类的实例并保存到IOC容器, * 从IOC容器取出对应的实例给字段赋值,即依赖注入, * 最后将url和...

    前端微信小程序原生开发,ui框架使用weui和iview。后端SpringMVC+Spring+hibernate.zip

    用户通过搜索或扫描二维码,瞬间即可开启使用,享受快速加载、流畅运行的服务。 该小程序界面设计简洁明了,布局合理,易于上手。同时,其特色功能如实时更新的信息推送、个性化推荐以及社交分享功能,让用户能够...

    看透springMvc源代码分析与实践-扫描版本

    看透springMvc源代码分析与实践-扫描版本 解压后大小(57.7M) 国内资深Web开发专家根据Spring MVC全新技术撰写,基于实际生产环境,从基础知识、源代码和实战3个维度对Spring MVC的结构和实现进行详细讲解 全面介绍...

    java手写SpringMvc框架

    java手写SpringMvc框架,理解包扫描过程,理解spring mvc运行机制

    Spring+SpringMVC+Mybatis简单Demo

    该demo是一个Spring4.1.3+SpringMVC+Mybatis整合而成的demo(使用sqlSessionFactory和MapperScannerConfigurer自动扫描*Mapper.java和*Mapper.xml文件)非常简单,容易理解。为了方便,没有使用jsp提交action到后台...

    spring杂谈 作者zhang KaiTao

    1.10 基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)到底有什么区别。 1.11 在spring中获取代理对象代理的目标对象工具类 1.12 如何为spring代理类设置属性值 1.13 我对SpringDAO层支持...

    springMVC:Spring MVC相关演示

    SpringMVC [TOC] 简介: springMVC是一个web层mvc框架 , 何谓MVC? model 模型 view 视图 controller 控制器 这是一种设计模式,将责任...记得配置一下基础扫描的包 , 这样配置的注解才会生效 在指定的类上面添加@Cont

    《SpringMVC官方文档》(中文版).pdf

    《SpringMVC官方文档》中文版 带目录超清版,非劣质扫描版!

    关于 SSM 整合.rar

    所以我们在 SpringMVC 的配置文件里配置的注解扫描路径就是 Controller的路径,而 Spring 的配置文件配置的注解扫描路径会排除 Controller。 Spring 和 SpringMVC 是父子容器的关系。Spring 容器是父容器,SpringMVC...

    看透SpringMVC源代码分析与实践(扫描版)

    通过本书,你将:  系统学习网站的各种架构以及每种架构所针对的... 深入理解Spring MVC的编程技巧和设计理念,提高综合思考、整体架构的能力。  学习作者自研的源代码分析方法——器用分析法,高效学习程序源代码。

    SpringMVC配置文件

    SpringMVC配置文件,自动扫描controller包下的所有类,开启注解功能

    Spring、SpringMVC和mybatis完整整合实例(含案例)

    目录结构,其中mybatis.xml并没有使用,已经整合到Spring容器中 3.配置SpringMVC的配置文件(springmvc.xml) 只扫描Controller注解 四、编写测试代码 准备数据库表和pojo类 五、...

    微信硬件蓝牙开发jsapi+SpringMVC+H5+jQuery

    快速入门微信硬件jsapi+微信硬件接入流程+jsapi_ticket的获取+tartScanWXDevice[扫描蓝牙设备]接口实现

Global site tag (gtag.js) - Google Analytics