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

后来检查配置:

<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整个大工厂中,存在一个实例。

 

相关文章:

  • 2021-08-12
  • 2022-02-10
  • 2021-09-23
  • 2021-04-25
  • 2021-06-18
  • 2021-12-10
  • 2021-09-07
猜你喜欢
  • 2021-04-03
  • 2021-09-20
  • 2022-12-23
  • 2021-11-25
  • 2021-05-30
  • 2021-07-25
相关资源
相似解决方案