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

发布于:2024-04-20 ⋅ 阅读:(24) ⋅ 点赞:(0)

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

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

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

       组件注册【全注解驱动

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

       加油!