代码&优雅着&生活

导航

springmvc 整合Controller出现实例化两次问题

启动项目的时候,发现初始化控制层的时候,初始化(使用构造方法打印日志的方式)了两次的情况。

后来检查配置:

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

 

发现,配置扫描的时候,没有排除@controller 层的过滤器

修改后,问题解决,如下:

在springmvc的配置文件配置扫描:

  <context:component-scan base-package="com.winning.joiner.magiccube">
        <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>

在spring context的配置扫描:

  <context:component-scan base-package="com.winning.joiner.magiccube">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        <context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
    </context:component-scan>

两个文件配合配置,才能解决实例化两次的问题。

简单点说,就是springmvc扫描的包,扫描包含@Controller注解的类。

而spring context 的扫描包,就要包包含@Controller的注解的类排除掉,这样才会在spring整个大工厂中,存在一个实例。

 

posted on 2018-07-28 09:32  幸运的凌人  阅读(600)  评论(0编辑  收藏  举报