首页 > 其他分享 >@ComponentScan

@ComponentScan

时间:2024-08-12 19:15:50浏览次数:9  
标签:Spring 扫描 MyAnnotation 注解 ComponentScan class

@ComponentScan 是一个注解,用于Spring框架,它允许开发者指定Spring应该扫描哪个包或包下的子包来寻找组件(如@Component@Service@Repository等注解标注的类)。通过使用 @ComponentScan,开发者可以自动化地注册这些组件,使得它们能够被Spring容器管理。

语法

@ComponentScan 注解的基本语法如下:

@ComponentScan(basePackages = "com.example", useDefaultFilters = false, includeFilters = {@Filter(type = FilterType.ANNOTATION, classes = {MyAnnotation.class})}, excludeFilters = {@Filter(type = FilterType.ANNOTATION, classes = {MyAnnotation.class})})

属性

  • basePackages:用于指定Spring应该扫描的包。这个属性可以接受一个字符串数组,也可以接受一个点号分隔的包路径。
  • useDefaultFilters:如果设置为true,则使用默认的过滤器,即扫描所有带有@Component@Service@Repository@Controller注解的类。如果设置为false,则不会使用默认的过滤器。
  • includeFilters:用于指定Spring应该包含哪些类型的类。这个属性可以接受一个过滤器数组,每个过滤器都包含一个类型和一个类。例如,@Filter(type = FilterType.ANNOTATION, classes = {MyAnnotation.class}) 表示只扫描带有MyAnnotation注解的类。
  • excludeFilters:用于指定Spring不应该包含哪些类型的类。这个属性和includeFilters类似,也可以接受一个过滤器数组。

示例

以下是一个使用 @ComponentScan 的示例:

@SpringBootApplication
@ComponentScan(basePackages = "com.example", useDefaultFilters = false, includeFilters = {@Filter(type = FilterType.ANNOTATION, classes = {MyAnnotation.class})}, excludeFilters = {@Filter(type = FilterType.ANNOTATION, classes = {MyAnnotation.class})})
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

在这个示例中,Spring将扫描com.example包及其子包,只包含带有MyAnnotation注解的类,并排除带有MyAnnotation注解的类。

应用场景

  • 自动化组件注册:通过 @ComponentScan,Spring可以自动扫描并注册带有特定注解的类,从而简化了组件注册的过程。
  • 微服务架构:在微服务架构中,每个服务可能会有多个模块,每个模块都有自己的一套组件。使用 @ComponentScan 可以方便地在每个模块中定义自己的扫描路径,从而实现模块化开发。

注意事项

  • @ComponentScan 注解通常用于Spring Boot应用的主类上,这样Spring Boot会自动扫描该类所在的包及其子包。
  • 如果需要对特定的模块或包进行扫描,可以将 @ComponentScan 注解放在该模块或包的入口类上。
  • 如果需要排除某些包或类,可以通过设置excludeFilters属性来实现。
    总之,@ComponentScan 是Spring框架中的一个重要注解,它允许开发者自动化地注册带有特定注解的类,从而简化组件注册的过程。通过合理地使用这个注解,可以实现模块化开发和微服务架构。

标签:Spring,扫描,MyAnnotation,注解,ComponentScan,class
From: https://www.cnblogs.com/csdn001/p/18355585

相关文章

  • @ComponentScan注解的属性详细使用
    指定包扫描,主要扫描该包下@Controller @Service @Respsitory @Component四个注解@ComponentScan(value="com.songzixian")指定排除要扫描的包@ComponentScan(value="com.songzixian",excludeFilters={@ComponentScan.Filter(type=FilterType.ANNOTATION,classes={Co......
  • java:【@ComponentScan】和【@SpringBootApplication】扫包范围的冲突
    #代码结构如下:注意【com.chz.myBean.branch】和【com.chz.myBean.main】这两个包是没有生重叠的。主程序【MyBeanTest1、MyBeanTest2、MyBeanTest3】这两个类是在包【com.chz.myBean.main】下#示例代码【pom.xml】<dependency><groupId>org.springframework.bo......
  • springboot使用ComponentScan和MapperScan
    今天讲springboot项目中的启动类换到了start包下,发现无法扫描并注册javabean. 原因:容器在启动时会由spring.classPathBeanDefinitionScanner和spring-mybaits.classPathMapperScanner两个类去执行doScan方法,如果没有使用@ComponentScan和MapperScan两个注解spring会使用Spring......
  • @ComponentScan注解 -【Spring底层原理
    案例已上传GitHub,欢迎star:https://github.com/oneStarLR/spring-annotation一、注解用法1.背景知识什么是组件?组件也是抽象的概念,可以理解为一些符合某种规范的类组合在一起就构成了组件,他可以提供某些特定的功能,但实际他们都是类,只不过有他们特殊的规定。组件......
  • @Repeatable(ComponentScans.class)
    @Repeatable 是 Java 8 引入的一个元注解,用于标注某个注解可以在同一个声明上多次使用。@Repeatable 注解的值是一个容器注解,该容器注解内部定义了一个注解数组,用于存放多次使用的注解。@Repeatable 是 Java 8 引入的一个元注解,它允许同一个注解在同一声明上被多次使用。......
  • 深入理解spring注解之@ComponentScan注解
    今天主要从以下几个方面来介绍一下@ComponentScan注解:@ComponentScan注解是什么@ComponentScan注解的详细使用 1,@ComponentScan注解是什么 其实很简单,@ComponentScan主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中  2,@Compone......
  • 一、@Configuration、@Conponent 、@ComponentScan 注解等
    一句话概括区别:@Configuration中所有带@Bean注解的方法都会被动态代理,因此调用该方法返回的都是同一个实例。2.可以直接调用方法,不需要@Autowired注入后使用。@Conponent 声明为Spring的组件。修饰的类不会被代理,每实例化一次就会创建一个新的对象。2.一般情况下@Bean......
  • ApplicationContext is unlikely to start due to a @ComponentScan of the default p
    springboot警告:ApplicationContextisunlikelytostartduetoa@ComponentScanofthedefaultpackage解决办法:1、一般发出这个警告的原因是你把启动类直接放在的src目录下面。2、你需要在src目录下面再建一个包,然后把启动类放到下面。3、或者你错将启动类放到java文件中了......
  • @ComponentScan和@MapperScan的作用
    本文根据文章:https://blog.csdn.net/weixin_45693551/article/details/132302689进行修改@ComponentScan@ComponentScan("com.xa")注解用于指定Spring容器在启动时需要扫描的包路径。在这个例子中,Spring容器会扫描com.xa包及其子包下的所有类,将带有@Component、@Service、@Re......
  • 新增@ComponentScan,访问接口404?
    1.起因:自定义一个接口日志注解。打算为所有的接口打印日志和耗时等信息。将定义的@IfLog注解加到HiController的/hi接口因为Application仅扫描和他同一个包下所有类,所以在启动类上增加了@ComponentScan({"com.wxy.log.common"})用于扫描新增的日志切面。访问接......