由于在开发过程中我们会将一些比较共用方法提取出来,采用spring AOP来对其进行管理,在各模块中将方法进行织入,但是在springMVC与spring整合过程中,我出现了一些问题,现在记录下来,方便大家参考。
我出现的问题是:
我的spring AOP配置是正确的,但是我的方法却怎么无法织入到目标上,经过查询发现,原来在对spring配置与springMVC配置过程中,若采用注解自动扫描包方式,如下代码
applicationContext.xml
<context:component-scan base-package="com.mjl.service,com.ml.interceptor"/>
若果这里加上controller的话,那么在springMVC的扫描中会扫不到control,因为spring在加载的过程中已经加载了control层的相关类,而controller层是springMVC所控制的,因此正确配置如下:
spring的配置为
<context:component-scan base-package="com.mjl.service,com.mjl.interceptor">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
表示在扫描时不扫描controller相关注解的类。
而springMVC的配置为
<context:component-scan base-package="com.mjl.controller">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
这样就能解决springMVC与spring整合时,AOP功能无法使用的情况。