scanBasePackages原理和使用范例

scanBasePackages原理和使用范例

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
      • 1.正文
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

概述

需求:

设计思路

scanBasePackages原理和使用范例_第1张图片

实现思路分析

1.正文

在非Spring Boot项目中,我们必须显式地使用@ComponentScan注解定义被扫描的包,可以通过XML文件在应用上下文中定义或在Java代码中对应用上下文定义,否则会加载不到预期的bean。

scanBasePackages是Spring框架中的一个注解,用于指定要扫描的基础包名。它通过指定的包名来扫描并自动注册Bean。

原理:
scanBasePackages注解的原理是通过Spring的ComponentScan注解来实现的。在使用scanBasePackages注解时,通常会在配置类上添加@ComponentScan注解,并指定要扫描的基础包名。Spring容器会根据指定的包名来扫描该包及其子包下的所有类,并将其注册为Bean。

使用范例:

  1. 在配置类上添加@ComponentScan注解,并指定要扫描的基础包名。
@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {
   // 配置其他Bean
}
  1. 定义一个类,并添加@Component注解,该类将被自动扫描并注册为Bean。
@Component
public class MyBean {
   // ...
}
  1. 在其他类中使用自动注入的方式获取该Bean。
@Service
public class MyService {
   @Autowired
   private MyBean myBean;
   // ...
}

在上述例子中,通过scanBasePackages注解指定了要扫描的基础包名为"com.example",Spring容器会自动扫描该包及其子包下的所有类,并将加上@Component注解的类注册为Bean。在MyService类中使用@Autowired注解来自动注入MyBean对象,从而实现了依赖注入。

scanBasePackages:指定扫描的基本包的位置,可以指定多个包名进行扫描,默认是扫描入口类所在包和子包下面。
@ComponentScan 的作用就是根据定义的扫描路径,把符合扫描规则的类装配到spring容器中,

默认情况下,扫描启动类同级及其子级包下的所有文件。我们可以通过以下的测试来验证一下。

二、SpringBoot默认扫描包机制 - 原理
实际上SpringBoot启动类上面的@SpringBootApplication里面有一个@ComponentScan,它可以扫描启动类同级及其子级包下的所有文件,并且把带有@Component、@Repository、@Service、@Controller的类注册到Spring容器。

参考资料和推荐阅读

参考资料
官方文档
开源社区
博客文章
书籍推荐
1.https://blog.csdn.net/baidu_21349635/article/details/104921956

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~,如果有兴趣,可以加文末的交流群,大家一起进步哈

你可能感兴趣的:(spring,boot,开发语言)