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 就差不多能记住,毕竟也开是做开发出身的,虽然语言不同但套路大底是相通的......

加油!

相关推荐
并不会1 小时前
常见 CSS 选择器用法
前端·css·学习·html·前端开发·css选择器
龙鸣丿1 小时前
Linux基础学习笔记
linux·笔记·学习
NiNg_1_2343 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
Nu11PointerException3 小时前
JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
笔记·学习
种树人202408193 小时前
如何在 Spring Boot 中启用定时任务
spring boot
苹果醋36 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
Wx-bishekaifayuan6 小时前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
customer086 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
@小博的博客7 小时前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习
南宫生7 小时前
贪心算法习题其四【力扣】【算法学习day.21】
学习·算法·leetcode·链表·贪心算法