Spring ComponentScan注解的简介说明

转自:

Spring ComponentScan注解的简介说明

下文笔者讲述Spring中ComponentScan注解的简介说明,如下所示:

ComponentScan注解的功能

定义的扫描路径,把符合扫描规则的类装配到spring的bean容器中

ComponentScan注解的源码

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Repeatable(ComponentScans.class)
public @interface ComponentScan {
    @AliasFor("basePackages")
    String[] value() default {};
 
    @AliasFor("value")
    String[] basePackages() default {};
 
    Class[] basePackageClasses() default {};
 
    Class nameGenerator() default BeanNameGenerator.class;
 
    Class scopeResolver() default AnnotationScopeMetadataResolver.class;
 
    ScopedProxyMode scopedProxy() default ScopedProxyMode.DEFAULT;
 
    String resourcePattern() default "**/*.class";
    boolean useDefaultFilters() default true;
    ComponentScan.Filter[] includeFilters() default {};
    ComponentScan.Filter[] excludeFilters() default {};
    boolean lazyInit() default false;
    @Retention(RetentionPolicy.RUNTIME)
    @Target({})
    public @interface Filter {
        FilterType type() default FilterType.ANNOTATION;
        @AliasFor("classes")
        Class[] value() default {};
        @AliasFor("value")
        Class[] classes() default {};
        String[] pattern() default {};
    }
}

basePackages与value:? 用于指定包的路径,进行扫描
basePackageClasses: 用于指定某个类的包的路径进行扫描
nameGenerator: bean的名称的生成器
useDefaultFilters: 是否开启对@Component,@Repository,@Service,@Controller的类进行检测
includeFilters: 包含的过滤条件 FilterType.ANNOTATION:按照注解过滤,
                 FilterType.ASSIGNABLE_TYPE:按照给定的类型,
	             FilterType.ASPECTJ:使用ASPECTJ表达式,
	             FilterType.REGEX:正则,
	             FilterType.CUSTOM:自定义规则
excludeFilters: 排除的过滤条件,用法和includeFilters一样

注解示例分享

 扫描包
@ComponentScan(basePackages ="")     //单个
@ComponentScan(basePackages = {"xxx","com.java265.","..."})   //多个
注意:可以省略“basePackages =”

@Configuration
@ComponentScan("com.java265.spring.service")
public class MyConfig {}

@Configuration
@ComponentScan("com.java265.spring.dao","com.java265.spring.service")
public class MyConfig {}

@Configuration
@ComponentScan("com.java265.spring.*")   //通配符匹配所有的包
public class MyConfig {}
2. 扫描类
@ComponentScan(basePackageClasses ="")   //单个
@ComponentScan(basePackageClasses = {"aaa","bbb","…"})  //多个
注意:不可以省略“basePackageClasses =”

@Configuration
@ComponentScan(basePackageClasses = HelloController.class)
public class MyConfig {
}
Spring ComponentScan注解有以下特性
   1.自定扫描路径下边带有@Controller,@Service,@Repository,@Component注解加入spring容器
   2.通过includeFilters加入扫描路径下没有以上注解的类加入spring容器
   3.通过excludeFilters过滤出不用加入spring容器的类
   4.自定义增加了@Component注解的注解方式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值