深入理解spring注解之@ComponentScan注解

今天主要从以下几个方面来介绍一下@ComponentScan注解:

  • @ComponentScan注解是什么

  • @ComponentScan注解的详细使用

 

1,@ComponentScan注解是什么

 

其实很简单,@ComponentScan主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中

 

 

2,@ComponentScan注解的详细使用

 

做过web开发的同学一定都有用过@Controller,@Service,@Repository注解,查看其源码你会发现,他们中有一个共同的注解@Component

没错

@ComponentScan注解默认就会   装配    标识了@Controller,@Service,@Repository,@Component注解的    类       到spring容器中,好下面咱们就先来简单演示一下这个例子

 

 

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

 

 

 

 

 

 

 

package com.zhang.controller;
import org.springframework.stereotype.Controller;
@Controller
public class UserController {
}

 

 

 

 

 

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

 

 

 

 

 

package com.zhang.service;
import org.springframework.stereotype.Service;
@Service
public class UserService {
}

 

 

 

 

 

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

 

 

 

 

 

 

 

package com.zhang.dao;
import org.springframework.stereotype.Repository;
@Repository
public class UserDao {
}

 

 

 

 

 

新建一个配置类如下:

 

 

 

 

 

/**
 * 主配置类  包扫描com.zhang
 *
 * @author zhangqh
 * @date 2018年5月12日
 */
@ComponentScan(value="com.zhang")
@Configuration
public class MainScanConfig {
}

 

 

 

 

 

新建测试方法如下:

 

 

 

 

 

AnnotationConfigApplicationContext applicationContext2 = new AnnotationConfigApplicationContext(MainScanConfig.class);
        String[] definitionNames = applicationContext2.getBeanDefinitionNames();
        for (String name : definitionNames) {
            System.out.println(name);
}

 

 

 

 

 

运行结果如下:

 

 

 

 

 

mainScanConfig
userController
userDao
userService

 

 

总结一下@ComponentScan的常用方式如下

 

  • 自定扫描路径下边带有@Controller,@Service,@Repository,@Component注解加入spring容器

  • 通过includeFilters加入扫描路径下没有以上注解的类加入spring容器

  • 通过excludeFilters过滤出不用加入spring容器的类

  • 自定义增加了@Component注解的注解方式



 

posted @ 2024-02-01 13:53  予真  阅读(44)  评论(0编辑  收藏  举报