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

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+hibernate

    Spring MVC、Spring 和 Hibernate 是Java Web开发中的三大主流框架,它们各司其职,共同构建了一个强大而灵活的后端架构。Spring MVC 负责处理HTTP请求并将其路由到相应的控制器,Spring 提供了依赖注入(DI)和面向...

    SpringMVC-Spring-Mybatis架包

    在Java Web开发中,SpringMVC、Spring和Mybatis是三大核心组件,它们共同构建了所谓的"SSM"(Spring MVC、Spring、Mybatis)架构。这个架构是企业级应用开发的常用选择,因为它提供了灵活的控制层、强大的依赖注入...

    maven搭建SpringMVC+spring+ibatis

    Ibatis与Spring框架集成后,可以使用Spring的DI功能管理数据库连接,同时通过MyBatis-Spring提供的MapperScannerConfigurer自动扫描并注册Mapper接口,实现DAO层的便捷开发。 在SpringMVC+Spring+Ibatis的架构中,...

    SpringMVC+Spring+Mybatis所需jar包

    以上就是这个"SpringMVC+Spring+Mybatis所需jar包"中涉及的主要技术点,这些组件和库共同构成了一个强大的Java Web开发环境,帮助开发者快速构建功能丰富的应用程序。在实际项目中,还需要结合IDE、构建工具(如...

    SpringMVC+Spring+Mybatis整合jar包

    SpringMVC、Spring和Mybatis是Java开发中常用的三大框架,它们各自负责应用程序的不同层面:SpringMVC处理Web层逻辑,Spring提供全面的依赖注入和面向切面编程,而Mybatis则专注于数据库操作。整合这三大框架,可以...

    SpringMVC+Spring+mybatis项目搭建详细过程

    在本文中,我们将深入探讨如何搭建一个基于SpringMVC、Spring和MyBatis的Java Web项目。这是一个常见的技术栈,广泛应用于企业级应用开发。首先,让我们了解这三个框架的核心功能。 1. SpringMVC:SpringMVC是...

    SpringMVC+Spring+Hibernate(SSH)框架搭建之一

    在IT行业中,SSH框架是Java Web开发中常用的三大框架组合,包括SpringMVC、Spring和Hibernate。本教程将详细介绍如何一步步搭建一个基于SSH的Web应用环境,并提供了解决常见问题的说明文档。 首先,让我们从...

    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:配置...

    java开发之SpringMVC + Spring + SpringJDBC整合.zip

    同时,还可以参考网络资源,如“史上最全最强SpringMVC详细示例实战教程”和“SpringMVC + Spring + SpringJDBC整合”的文档,学习如何创建基于Maven的Web项目,以及如何在IDEA中添加和管理jar包。 总之,SpringMVC...

    springmvc+spring+mybatis(SSM)项目所需jar包

    SSM框架,即Spring、SpringMVC和MyBatis的集成,是Java开发Web应用时常用的三大组件。本文将详细讲解这三大框架的核心概念、作用以及它们如何协同工作。 **Spring框架** Spring是一个全面的Java应用程序开发框架,...

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

    SpringMVC和Spring的配置文件扫描包详解 在 Spring 框架中,容器是一种核心思想,用来管理 Bean 的整个生命周期。在一个项目中,容器不一定只有一个,Spring 中可以包括多个容器,而且容器之间有上下层关系。例如,...

    springmvc,spring,mybatis整合

    在IT行业中,Spring MVC、Spring和MyBatis是三个非常重要的框架,它们分别负责Web开发、依赖注入以及数据库操作。本文将详细介绍这三个框架的整合过程,以及如何利用Maven进行项目构建,最后会提及JSP在其中的角色。...

    Spring SpringMVC Mybatis 整合jar包

    Spring、SpringMVC和Mybatis是Java开发中非常流行的三大框架,它们的整合使用能构建出高效、可维护的企业级Web应用。这个压缩包文件包含了这三个框架的核心组件,旨在简化开发人员的集成工作,确保应用可以顺利运行...

    springmvc整合hibernate所需jar包

    Spring MVC和Hibernate整合所需的jar包通常包括以下几类: 1. **Spring框架**:包括spring-context、spring-beans、spring-web、spring-webmvc等模块,这些jar包提供了Spring的核心功能,如依赖注入、AOP、MVC支持...

    springMVC整合的spring整合的

    本文将深入探讨SpringMVC与Spring的整合,以及如何在实际开发中进行配置和使用。 首先,SpringMVC作为一个轻量级的Web MVC框架,它简化了Web应用的开发流程,允许开发者将业务逻辑、数据访问和用户界面分离。Spring...

    spring mybatis springmvc整合jar包总和

    在Java Web开发领域,Spring、MyBatis和SpringMVC是三个非常重要的框架。它们各自承担着不同的职责,Spring提供全面的DI(依赖注入)和AOP(面向切面编程)功能,MyBatis则是一个优秀的持久层框架,简化了数据库操作...

    ssm框架整合(springMVC + spring + MyBatis,)

    SSM框架整合是Java开发中常见的技术栈,它结合了SpringMVC、Spring和MyBatis三个强大的组件,用于构建高效、灵活的企业级应用。在这个实例中,我们不仅会探讨这三个框架的核心功能,还会看到如何将它们有效地整合在...

    spring-mybatis-springMvc整合jar包

    这个模块提供了Spring Bean与MyBatis SqlSessionFactory和SqlSessionTemplate的集成,以及MapperScannerConfigurer,可以自动扫描并注册Mapper接口,使得在Spring应用中调用MyBatis的Mapper接口就像调用普通的Java...

    整合SpringMVC+Spring+Hibernate+druid框架

    在IT行业中,构建高效、可维护的Web应用是至关重要的,而SpringMVC、Spring、Hibernate和Druid等框架的整合则为此提供了强大的支持。本文将深入探讨如何使用Maven来整合这些框架,并阐述它们各自的功能和整合过程中...

Global site tag (gtag.js) - Google Analytics