zoukankan      html  css  js  c++  java
  • Spring 通过注解定义Bean以及自动扫描注解定义的bean ComponentScan 自动扫描组件&指定扫描规则

    不管是xml还是注解,他们都是表达bean定义的载体,其实质都是为Spring容器提供Bean定义的信息,在表现形式上都是讲xml定义的内容通过类注解进行描述。

    Spring容器成功启动的三大要件分别为:bean定义信息,bean实现类,spring本身。
    如果采用基于xml的配置,则bean定义信息和bean实现类本身是分离的;而如果采用基于注解的配置文件,则bean定义信息通过在bean实现类上标注注解实现。

    @Controller:用于对Controller实现类进行标注
    @Repository:用于对DAO实现类精心标注
    @Service:用于对Service实现类进行标注

    Spring提供了一个context命名空间,他提供了通过扫描类包以应用注解定义Bean的方式。
    如果仅希望扫描特定的类而非基包下的所有类,那么可以使用resource-pattern属性过滤出特定的类。
    include-filter表示要包含的目标类,而exclude-filter表示要排除的目标类。use-default-filter属性,其默认值为true,表示默认会对标注@Component,@Controller,@Service,@Reposity的Bean进行扫描。

    组件注册-@ComponentScan-自动扫描组件&指定扫描规则
    以前的xml配置,是需要做包扫描的:
    只要是标注了@Controller,@Service,@Repository,@Component的组件,都会被扫描进容器中。
    xml中添加的配置信息为:

    通过注解的方式,自动扫描组件
    @ComponentScan(value="com.atguigu") value表示要扫描包com.atguigu,其中,com.atguigu是包名
    excludeFilters 表示过滤器,扫描的时候,在该过滤器中的组件将会排出在spring容器外。
    excludeFilters ={@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {Service.class,Controller.class})}
    这句话表示,Service,Controller这两个组件将会排除在spring容器外
    type表示过滤的类型,这里用的是FilterType.ANNOTATION,表示按照注解排除

    下面我们看运行结果:
    没排除前(也就是没加过滤器,以及use-default-filter=true),spring容器中的组件为:

    增加过滤器后excludeFilters ={@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {Service.class,Controller.class})},spring容器中的组件为:

    从上面的比对结果可以看出,excludeFilters 将Service,Controller都过滤在spring容器外了。

    excludeFilters 表示扫描的时候,按照一定规则,排除哪些组件
    includeFilters 表示扫描的时候,只需要包含哪些组件

    只有禁用默认规则(默认规则表示扫描所有组件),includeFilters才会生效。useDefaultFilters = false
    增加includeFilters后,输出为:
    @ComponentScan(value = "com.atguigu", includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = { Controller.class})},useDefaultFilters = false)
    增加过滤器includeFilters 后,输出为:

  • 相关阅读:
    20201022-1 每周例行报告
    Alpha发布
    每周例行报告
    20201207-总结
    20201126-1 每周例行报告
    作业要求 20201120-1 每周例行报告
    20201112-1 每周例行报告
    作业要求 20201015-3 每周例行报告
    20200924-5 四则运算试题生成,结对
    20200924-1 每周例行报告
  • 原文地址:https://www.cnblogs.com/ch-10/p/9738739.html
Copyright © 2011-2022 走看看