使用@ComponentScan自动扫描组件并指定扫描规则

使用@ComponentScan自动扫描组件并指定扫描规则

@Repository、@Service、@Controller、@Component注解的类都会被扫描到,并自动注入到Spring容器中。

此时,我们分别创建BookDao、BookService以及BookController这三个类,并在这三个类中分别添加@Repository、@Service、@Controller注解,如下所示。

BookDao

// 名字默认是类名首字母小写 
@Repository public class BookDao { }

Book Service

@Service public class BookService { }

Book Controller

@Controller public class BookController { }

测试:

我们就可以在IOCTest测试类中编写如下一个方法来进行测试了,即看一看IOC容器中现在有哪些bean。

public class IOCTest {

    @Test
    public void test(){
        ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);

        String[] definitionNames = context.getBeanDefinitionNames();
        for (String name : definitionNames) {
            System.out.println(name);
        }
        
    }
}

在这里插入图片描述

使用注解配置包扫描

使用@ComponentScan注解来配置包扫描了。使用@ComponentScan注解配置包扫描非常非常easy!只须在我们的MainConfig类上添加@ComponentScan注解,并将扫描的包指定为com.baidu即可,如下所示。
在这里插入图片描述

@Configuration  //告诉Spring这是一个配置类,相当于Bean.xml
@ComponentScan(value = "com.baidu", excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)}) //就会扫描这个包下的所有注解;
public class MyConfig {

    @Bean("person01") //相当于我们的bean
    public Person person(){
        return  new Person("lisi",20);
    }
}

在这里插入图片描述

查看@ComponentScan 源码分析;

在这里插入图片描述

小结:

@Filter(type = FilterType.ANNOTATION,),这是通过注解;

public enum FilterType {
    ANNOTATION,
    ASSIGNABLE_TYPE,
    ASPECTJ,
    REGEX,
    CUSTOM;

    private FilterType() {
    }
}

对于Filter的过滤方法,我们有很多的方法去实现;

我们可以使用@ComponentScan注解来指定Spring扫描哪些包,可以使用
excludeFilters()方法来指定扫描时排除哪些组件,也可以使用
includeFilters()方法来指定扫描时只包含哪些组件。
当使用includeFilters()方法指定只包含哪些组件时,需要禁用掉默认的过滤规则。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值