Spring工作流程

  • Spring容器所管理的bean
    • 业务bean(service)

    • 功能bean (DataSource,SqlSessionFactoryBean,MapperScannerConfigurer等)

  • SpringMVC所管理的bean
    • 加载其相关bean(表现层bean),也就是controller包下的控制类

  • 如何避免Spring加载到SpringMVC的bean
    • 1.将Spring和SpringMVC的配置类包扫描的路径设定为一个精确的包,如service、dao等

    @Configuration
    @ComponentScan({"com.presentationLayer.controller"})
    public class SpringMVCConfig{...}
    ​
    @Configuration
    @ComponentScan({"com.presentationLayer.dao","com.presentationLayer.service"})
    @PropertySource("jdbc.properties")
    @Import({JdbcConfig.class, MybatisConfig.class})
    public class SpringConfig {...}
    • 2.在Spring配置类包扫描一个目录下的所有包的同时排除SpringMVC管理的bean所在的包,这里需要满足一个前提条件==》SpringMVCConfig的配置类中不能将扫描controller,否则排除无法生效,这是由于 SpringMvcConfig 上有一个@Configuration注解,也会被Spring扫描到 SpringMvcConfig上又有一个@ComponentScan,把controller类又给扫描进来了

    @ComponentScan(value = {"com.presentationLayer"}, excludeFilters =                                      @ComponentScan.Filter(type = FilterType.ANNOTATION,
                        classes = Controller.class))
    • 3.excludeFilters属性:设置扫描加载bean时,排除的过滤规则

      • type属性:设置排除规则,当前使用按照bean定义时的注解类型进行排除

        • ANNOTATION:按照注解排除

        • ASSIGNABLE_TYPE:按照指定的类型过滤

        • ASPECTJ:按照Aspectj表达式排除,基本上不会用

        • REGEX:按照正则表达式排除

        • CUSTOM:按照自定义规则排除

      • classes属性:设置排除的具体注解类,当前设置排除@Controller定义的bean

  • 在tomcat服务器启动将Spring的配置类加载,我们需要修改 ServletContainersInitConfig
  • 上一篇:mongodb集群搭建-3.初始化


    下一篇:js 高德地图实现只展示中国和某个省