spring容器和springMVC框架扫描包的两种方式

我们知道,springMVC框架是spring容器的一个子容器,因此在某些方面它们可以达到一个共同的效果,接下来我们来介绍一下在spring容器和springMVC扫描包的两种方式。
1、将扫描器全部配置于springMVC中

<!--以下映射器和适配器的配置可以通过注解驱动来代替  -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- SpringMVC的扫描范围 -->
<context:component-scan base-package="com.yzh.maven.*" />

说明:由于springMVC时spring的一个子容器,其特点是可以使用父容器的实例,因此我们可以将扫描器全部配置于springMVC中,但是这种扫描有可能会导致事务失去效果,因为spring和springMVC时明确分工的,一个可以接管事务和数据源以及其他bean的维护以及bean之间关系的维护;另一个则是管理web层的框架,用于处理视图解析、拦截器等相关操作,主要用于对controller层的操作。
注意:如果springMVC扫描不到controller层,那么客户端发来的*.action请求也会报告404的错误!另外,不能将扫描器全部配置于spring中,因为父容器不能访问子容器springMVC的实例(controller实例,这个实例需要由springMVC解析)。

2、springMVC管理controller层,spring管理除controller之外的所有层
(1)在spring容器中配置除controller之外的所有层的扫描器

<context:component-scan base-package="com.yzh.maven.*">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>

(2)在springMVC中配置controller层的扫描器

<context:component-scan base-package="com.yzh.maven.controller" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
</context:component-scan>

说明:由于框架本身的特点,springMVC管理controller层,spring管理除controller之外的所有层,官方更推荐使用第二种扫描方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值