Bean被创建两次

Spring 的IOC容器不应该扫描Spring MVC中的bean,对应的Spring MVC的IOC容器不应该扫描Spring 的bean

  1. <!--配置注解扫描器-->
  2. <context:component-scan base-package="com.zh.springmvc" use-default-filters="false">
  3. <context:include-filter type="annotation"
  4. expression="org.springframework.stereotype.Controller"/>
  5. <context:include-filter type="annotation"
  6. expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
  7. </context:component-scan>
  8. <context:component-scan base-package="com.zh.springmvc">
  9. <context:exclude-filter type="annotation"
  10. expression="org.springframework.stereotype.Controller"/>
  11. <context:exclude-filter type="annotation"
  12. expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
  13. </context:component-scan>

在Spring MVC配置文件中引用业务层的Bean

  1. 多个Spring IOC容器之间可以设置为父子关系,以实现良好的解耦。
  2. Spring MVC WEB层容器可作为“业务层”Spring 容器的子容器:即WEB层容器可以引用业务层容器的Bean,而业务层容器却访问不到WEB层容器的Bean