Spring Boot 学习(6)——组件注册

也是学得头晕眼花,终于知道学有多么难了,更知道教有多么难了......

各位大神们出的教程终归和正规出版社还是差距的,我觉得是没有"审定",这对于大多数做教程的人来说这应该通病:自己做(讲)的东西自己总觉得没有问题,就好比程序员不该给自己的代码做测试一样。

讲的和给出的素材多少都会有出入,有些时候讲起来更是没有条理,翻过来翻过去讲的都不一样,甚至有矛盾。翻视频可不以比翻那样好找,特别是以倍速学习时。真心是头晕眼花了......来一点笔记罢!

组件注册【全注解驱动

**@Configuration:**用于标记一个类作为配置类,这个类可以包含一个或多个 @Bean 注解的方法,用于定义 Spring 容器中的 Bean。

@SpringBootConfiguration :它本质上是一个派生注解,它继承了 Spring Framework 的 @Configuration 注解。@SpringBootConfiguration 标记的类表明这个类是 Spring Boot 应用的配置类,它包含了一系列的 @Bean 方法,这些方法可以创建并配置 Spring 容器中的 Bean。

@Bean :用于指示一个方法将会返回一个对象,这个对象应该被注册为 Spring 应用上下文中的 Bean。@Bean 注解通常与 @Configuration 注解一起使用,在 Java-based configuration 中定义 Bean。当你在一个配置类中使用 @Bean 注解时,你可以自定义 Bean 的创建逻辑,包括构造函数参数、属性设置等。Spring 容器会调用这些方法来创建 Bean 实例,并将它们注册到应用上下文中。

@Bean 注解的主要属性包括:

  • name:定义 Bean 的名字。如果没有指定,默认使用方法名作为 Bean 的名字。
  • initMethod:指定.Bean 实例化后要调用的初始化方法。
  • destroyMethod:指定在 Spring 容器关闭时调用的销毁方法。

@Scope :作用域定义了 Bean 的生命周期和创建方式。Spring 支持多种作用域,默认的作用域是单例(singleton)。

@Scope 注解的一些常用作用域:

  • singleton:Spring 容器中只有一个共享的 Bean 实例,默认作用域。
  • prototype:每次请求 Bean 时都会创建一个新的实例。
  • session:每个 HTTP 会话对应一个 Bean 实例。
  • request:每个 HTTP 请求对应一个 Bean 实例。
  • application:ServletContext 对应一个 Bean 实例,通常用于 Web 应用中。
  • websocket:WebSocket 对话对应一个 Bean 实例。

@Controller :用于标记一个类作为 Spring MVC 架构中的控制器类。控制器类的主要职责是处理用户的请求并将相应的响应返回给用户。@Controller 注解通常与 @RequestMapping 注解一起使用,用于映射 HTTP 请求到特定的方法上。

@Controller 注解的作用是:

  1. 标识一个类作为控制器类,这样 Spring 容器在启动时可以自动检测并注册这个控制器。
  2. 使得这个类能够处理 HTTP 请求,并将其映射到特定的方法上。
  3. 允许这个类的方法返回视图名称或数据模型,Spring MVC 会根据这些信息生成相应的 HTTP 响应。

@Service :用于标记一个类作为业务服务类。这个注解主要用于指示一个类提供业务逻辑服务,通常与 Spring 的自动扫描和依赖注入功能一起使用。@Service 注解是 @Component 注解的一个特化,它提供了更多的语义,使得开发者能够更容易地区分不同类型的组件。

@Service 注解的作用是:

  1. 标识一个类作为业务服务类,这样 Spring 容器可以自动检测并注册这个服务。
  2. 便于开发者理解和识别提供业务逻辑的类。
  3. 允许这个类被其他 Bean 通过依赖注入来使用。

@Service 注解通常与 @Autowired@Resource 注解一起使用,用于自动注入服务类到其他组件中。

@Repository :用于标记一个类作为数据访问层(DAO)的组件,即用于访问数据库的 Repository 类。

@Repository 注解的作用是:

  1. 标识一个类作为数据访问层的组件,这样 Spring 容器可以自动检测并注册这个 Repository。
  2. 便于开发者理解和识别数据访问层的类。
  3. 提供了异常翻译的功能,即将数据访问层的异常(如 JDBC 异常)转换为 Spring 的数据访问异常(如 DataAccessException)。

@Component :用于标记一个类作为 Spring 容器中的一个组件。Spring 容器会自动检测到这些标记了 @Component 的类,并将它们创建为 Bean 实例。@Component 是一个通用注解,可以用于任何 Spring 管理的组件,但它通常用于标记应用程序中的自定义组件

@Component 注解的作用是:

  1. 标识一个类作为 Spring 容器中的一个组件,这样 Spring 容器可以自动检测并注册这个组件。
  2. 便于开发者理解和识别应用程序中的不同组件。
  3. 提供了一个通用的注解,用于创建 Spring 管理的 Bean 实例。

@Import :用于指示一个配置类导入其他配置类或组件。这个注解可以用来组装不同的配置片段,使得应用程序的配置更加模块化和可管理。@Import 注解可以直接应用于 @Configuration 类,或者与 @ComponentScan 注解结合使用。

@Import 注解的主要作用是:

  1. 导入其他配置类,使得它们中的 @Bean 定义能够在同一个 Spring 容器中生效。
  2. 导入 Spring 组件,例如使用 @Component@Service@Repository@Controller 注解的类。
  3. 导入 Spring 的 @Configuration 类,以实现配置的模块化。

@ComponentScan :用于指示 Spring 容器在启动时应该自动扫描指定包路径下的类,并查找标记为 @Component 及其子注解(如 @Service@Repository@Controller 等)的类,将这些类注册为 Spring 容器中的 Bean。

@ComponentScan 注解的作用是:

  1. 指定 Spring 容器在启动时应该扫描的包路径。
  2. 自动检测并注册标记为 @Component 及其子注解的类作为 Spring 容器中的 Bean。
  3. 支持过滤器和自定义注解,以便更细粒度地控制哪些类被注册为 Bean。

这些多尝试写几遍 Demo 就差不多能记住,毕竟也开是做开发出身的,虽然语言不同但套路大底是相通的......

加油!

相关推荐
洋洋技术笔记21 小时前
Spring Boot条件注解详解
java·spring boot
洋洋技术笔记2 天前
Spring Boot配置管理最佳实践
spring boot
用户8307196840823 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
大道至简Edward3 天前
Spring Boot 2.7 + JDK 8 升级到 Spring Boot 3.x + JDK 17 完整指南
spring boot·后端
洋洋技术笔记3 天前
Spring Boot启动流程解析
spring boot·后端
怒放吧德德3 天前
Spring Boot 实战:RSA+AES 接口全链路加解密(防篡改 / 防重放)
java·spring boot·后端
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
李慕婉学姐4 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
QQ5110082854 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
WeiXin_DZbishe4 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5