@ComponentScan注解了解

作用:@ComponentScan主要就是从指定的路径中找出标识了需要装配的类自动装配到spring的bean容器中。在配置类上添加@ComponentScan注解。该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 context:component-scan跟包扫描仪。@ComponentScan注解默认装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中。然后@SpringBootApplication注解里面包含了@ComponentScan注解

下面来看个例子

在包com.study.controller下新建一个UserController带@Controller注解如下

@Controller
public class UserController {
}

在包com.study.service下新建一个UserService带@Service注解如下

@Service
public class UserService {
}

在包com.study.dao下新建一个UserDao带@Repository注解如下

@Repository
public class UserDao {
}

配置类

@Configuration//代表此类是一个配置类
@ComponentScan(basePackages = "com.study")//扫描com.study下面并注册导Spring的容器当中
public class MySpring {
}

单元测试类

public class tests {
    @Test
    public void mains(){
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MySpring.class);
        String[] definitionNames = applicationContext.getBeanDefinitionNames();//获取Spring容器中存活的Javabean
        for (String name : definitionNames) {
            System.out.println(name);
        }
    }
}

运行结果如下

mySpring
userController
userDao
userService

@ComponentScan详细配置

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一样

excludeFilters写法
写法1

@Configuration//代表此类是一个配置类
@ComponentScan(value= "com.study",excludeFilters ={
        @ComponentScan.Filter(type= FilterType.ANNOTATION, classes = {Controller.class, Service.class})
})//扫描com.study下面并注册导Spring的容器当中
public class MySpring {
}

运行结果

mySpring
userDao

过滤掉@Controller和@Service这俩个注解

includeFilters写法

@Configuration//代表此类是一个配置类
//扫描com.study下面并注册导Spring的容器当中
@ComponentScan(value= "com.study",includeFilters ={
        @ComponentScan.Filter(type= FilterType.ANNOTATION, classes = {Service.class})
},useDefaultFilters = false)//只扫描指定的注解
public class MySpring {
}

运行结果

mySpring
userService
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值