SpringBoot @ComponentScan扫描的局限性方式

 更新时间:2025年01月24日 08:37:05   作者:boonya  
文章总结:SpringBoot的@ComponentScan注解在扫描组件时存在局限性,只能扫描指定的包及其子包,无法扫描@SpringBootApplication注解自动配置的组件,使用@SpringBootApplication注解可以解决这一问题,它集成了@Configuration、@EnableAutoConfiguration

SpringBoot @ComponentScan扫描的局限性

使用@ComponentScan注解时,Spring只注入设置的类或者包及包的子集对象。

这会导致原来@SpringBootApplication 自动配置装配的功能在对象注入的时候不会注入当前工程。

@ComponentScan

扫描依赖注入模块服务 [注意本项目的扫描@ComponentScan必须手动加入当前项目的包扫描路径]

package com.patrol.mobile;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
/**
 * 开启异步请求
 */
@EnableAsync
/**
 * 开启接口缓存
 */
@EnableCaching
/**
 * 开启定时任务调度
 */
@EnableScheduling
/**
 * 开启接口文档描述
 */
@EnableSwagger2
/**
 * 扫描依赖注入模块服务[注意本项目的扫描@ComponentScan必须手动加入当前项目的包扫描路径]
 */
@ComponentScan(basePackages = {"com.patrol.config", "com.patrol.web", "com.patrol.position.service", "com.patrol.mobile"})
/**
 * @SpringBootApplication 相当于@Configuration,@EnableAutoConfiguration和 @ComponentScan 并具有他们的默认属性值
 */
@SpringBootApplication
public class PatrolMobileServiceApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(PatrolMobileServiceApplication.class, args);
    }
 
}

@ComponentScan的局限性很明显,只扫描配置的这些包或者类。

使用@SpringbootApplication注解

可以解决根类或者配置类(我自己的说法,就是main所在类)头上注解过多的问题,一个@SpringbootApplication相当于@Configuration,@EnableAutoConfiguration 和 @ComponentScan 并具有他们的默认属性值。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java9中gc log参数迁移

    java9中gc log参数迁移

    本篇文章给大家详细讲述了java9中gc log参数迁移的相关知识点,对此有需要的朋友可以参考学习下。
    2018-03-03
  • Java 在Word文档中添加艺术字的示例

    Java 在Word文档中添加艺术字的示例

    这篇文章主要介绍了Java 在Word文档中添加艺术字的示例,帮助大家使用Java处理word文档,感兴趣的朋友可以了解下
    2020-09-09
  • springboot单独使用feign简化接口调用方式

    springboot单独使用feign简化接口调用方式

    这篇文章主要介绍了springboot单独使用feign简化接口调用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • SpringBoot工程Docker多环境中使用同一个Jar包解决方案

    SpringBoot工程Docker多环境中使用同一个Jar包解决方案

    在Docker多环境部署中,SpringBoot工程可以通过环境变量来动态改变配置,无需重新打包,利用volume挂载或docker cp命令,可以将配置文件直接传入容器,提高部署效率,并保证安全性
    2024-09-09
  • JDBC 实现通用的增删改查基础类方法

    JDBC 实现通用的增删改查基础类方法

    下面小编就为大家分享一篇JDBC 实现通用的增删改查基础类方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Java HashMap详解及实现原理

    Java HashMap详解及实现原理

    Java HashMap是Java集合框架中最常用的实现Map接口的数据结构,它使用哈希表实现,允许null作为键和值,可以存储不同类型的键值对,在Java中,HashMap被广泛应用于各种场景,如缓存、数据库连接池、路由器等,文中有详细的代码示例,需要的朋友可以参考下
    2023-05-05
  • springmvc字符编码过滤器CharacterEncodingFilter的使用

    springmvc字符编码过滤器CharacterEncodingFilter的使用

    这篇文章主要介绍了springmvc字符编码过滤器CharacterEncodingFilter的使用,具有很好的参考价值,希望对大家有所帮助。
    2021-08-08
  • java对象强转成object的方法实现

    java对象强转成object的方法实现

    在 Java 编程中,有时候我们需要将一个具体的对象强制转换成 Object 类型,本文主要介绍了java对象强转成object的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 解决Nacos成功启动但是无法访问 (Connection refused)

    解决Nacos成功启动但是无法访问 (Connection refused)

    这篇文章主要介绍了解决Nacos成功启动但是无法访问 (Connection refused)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Java编程之继承问题代码示例

    Java编程之继承问题代码示例

    这篇文章主要介绍了Java编程之继承问题代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11

最新评论