`
weiqingfei
  • 浏览: 316736 次
  • 性别: Icon_minigender_1
  • 来自: 黑洞
社区版块
存档分类
最新评论

Spring boot里类的扫描

    博客分类:
  • Java
阅读更多

spring boot里,扫描的class对象是用注解@ComponentScan(未指定的情况下默认是main函数所在package)来指定的。

然后通过类ComponentScanAnnotationParser来读取这些packages,交给ClassPathScanningCandidateComponentProvider来扫描这些类,找到package下所有类的活默认是由PathMatchingResourcePatternResolver来完成的,其实最终还是有jdk里ClassLoader类的getResources方法来做。

这个getResources方法有个path参数,就是指定目录的,如果为空字符或者".",找的是classpath的跟路径,如果指定了路径名,会寻找classpath的路径还有jar文件。

PathMatchingResourcePatternResolver就是通过去递归classpath路径来找所有类的,而对于jar,找到类所属jar文件后,用JarFile类便可以读取文件里所有的类。

 

对于第三方的包,spring boot是不会主动去扫描的,如果第三方包里有想向spring注册的bean的话,在META-INF目录下放置一个spring.factories的文件,用org.springframework.boot.autoconfigure.EnableAutoConfiguration来指定一个配置类就可以了。

分享到:
评论

相关推荐

    26. 改变自动扫描的包【从零开始学Spring Boot】

    默认情况下,Spring Boot会扫描启动类所在的包及其子包下的所有组件(如@Controller、@Service、@Repository、@Component等注解的类),但是有时候我们可能需要自定义扫描范围,这就是这个标题所要讲述的内容。...

    Spring-Boot-Reference-Guide, Spring Boot Reference Guide中文翻译 -《Spring Boot参考指南》.zip

    《Spring Boot参考指南》是Spring Boot开发者的重要参考资料,它详细阐述了Spring Boot框架的核心特性、配置方式、自动配置原理以及如何构建微服务应用等关键知识点。Spring Boot是Java开发领域中一个极其流行的轻量...

    spring-boot深入浅出

    7. **Spring Boot应用结构**:了解如何组织Spring Boot项目的结构,包括主配置类、启动器类、以及如何使用组件扫描和条件注解。 8. **微服务架构**:Spring Boot常被用作微服务的基础,学习如何构建和集成微服务,...

    Spring Boot面试题(92题)

    此外,Spring Boot的自动配置特性可以根据类路径中的类和jar包自动配置bean,例如,仅添加`spring-boot-starter-web`启动器就可以启用Web功能。它还摒弃了代码生成和XML配置,利用条件注解完成配置,这是Spring 4.x...

    Spring Boot实战 ,丁雪丰 (译者).zip

    自动配置是Spring Boot的一大亮点,它通过扫描类路径并在合适的地方自动添加Bean,使得开发者无需编写大量的XML配置。起步依赖则帮助我们便捷地引入所需的功能模块,例如数据访问、Web服务等。 在讲解基础知识后,...

    Spring Boot 教程、技术栈示例代码,快速简单上手教程。

    - **自动配置**:Spring Boot 通过扫描特定的包来发现组件,并基于这些组件自动进行配置,如数据源、缓存、消息等。 - **起步依赖**:Spring Boot 通过“起步依赖”(Starter POMs)提供了一种简单的方式来添加功能...

    Spring-Boot-Demo

    在Spring Boot项目中,我们不再需要手动编写大量的XML配置文件,而是通过自动配置类和starter模块来简化配置。对于Mybatis的整合,我们可以引入`spring-boot-starter-mybatis`依赖,这个starter模块已经包含了...

    spring-boot-2.7.0.zip源码

    4. **Web应用启动**:Spring Boot的`WebApplicationInitializer`和`SpringBootServletInitializer`类是用于启动Web应用的关键。它们实现了Servlet 3.0的接口,使得应用可以不依赖于web.xml启动。 5. **Actuator模块...

    17. Spring Boot普通类调用bean【从零开始学Spring Boot】

    标记了这些注解的类会被Spring扫描并纳入bean管理。 3. **@Autowired注解**: 这个注解用于自动注入bean。当你在类的属性或方法上添加@Autowired,Spring会尝试查找匹配类型的bean并注入。 4. **...

    11-Spring Boot面试题(92题).pdf

    - @EnableAutoConfiguration:通过这个注解,Spring Boot会根据类路径中的jar包、类和bean定义等信息,自动配置Spring应用。 - @ComponentScan:表示自动扫描当前包以及子包下使用了@Component、@Service等注解的类...

    spring boot-mybatis demo

    `@MapperScan` 注解在配置类上,指定要扫描的包路径,这样 Spring Boot 就能找到并管理所有的 Mapper。 5. **Service 层**:在业务逻辑层,你可以创建 Service 类,注入相应的 Mapper,然后调用其方法执行数据库...

    spring boot 简单实现

    1. 自动配置:Spring Boot通过`@EnableAutoConfiguration`注解,自动扫描并配置相应的Bean,极大地减少了开发者手动配置的工作量。 2. 内嵌式容器:Spring Boot支持内嵌Tomcat、Jetty或Undertow等Servlet容器,使得...

    Spring Boot 系列教程 入门

    `@SpringBootApplication`是组合了`@Configuration`、`@EnableAutoConfiguration`和`@ComponentScan`三个注解,它们分别代表配置类、自动配置和组件扫描,使得Spring Boot能自动识别和配置应用。 Spring Boot的自动...

    Spring Boot 学习笔记完整教程.pdf

    - 系统环境变量和包扫描:如何读取系统环境变量和自定义Spring Boot应用的包扫描路径。 - 依赖管理:Spring Boot通过引入spring-boot-starter-parent项目作为父项目来提供依赖管理功能。 4. 配置和扩展: - 自定义...

    从零开始学Spring Boot

    1.20 Spring Boot普通类调用bean 1.21 使用模板(thymeleaf-freemarker) 1.22 Spring Boot 添加JSP支持 1.23 Spring Boot Servlet 1.24 Spring Boot过滤器、监听器 1.25 Spring Boot 拦截器HandlerInterceptor 1.26...

    spring boot api chm

    3. **自动配置(Auto Configuration)**:Spring Boot通过扫描类路径中的特定注解来推断应用的需求,并自动配置相应的Bean。例如,如果你的类路径中有`HSQLDB`,那么它会自动配置一个内存数据库。 4. **Actuator**...

    spring boot+mybatis基础demo

    在本项目"spring boot+mybatis基础demo"中,我们将探讨如何使用Spring Boot与MyBatis框架构建一个基本的应用程序。这个示例演示了如何整合这两个流行的技术来处理数据库操作,其中数据源包括SQL Server和Oracle。...

    spring boot 示例代码

    在Spring Boot中,你可以使用`@RestController`注解标记控制器类,`@RequestMapping`, `@GetMapping`, `@PostMapping`, `@PutMapping`, `@DeleteMapping`等注解来处理不同的HTTP请求方法。例如,一个简单的RESTful ...

    Spring Boot 面试必备手册

    Spring Boot 的自动配置原理是通过 `@EnableAutoConfiguration` 注解启动,然后从 `META-INF/spring.factories` 文件中导入自动配置类。这些配置类会根据类路径中是否存在某些类、环境变量、命令行参数等条件,来...

Global site tag (gtag.js) - Google Analytics