也是学得头晕眼花,终于知道学有多么难了,更知道教有多么难了……
各位大神们出的教程终归和正规出版社还是差距的,我觉得是没有“审定”,这对于大多数做教程的人来说这应该通病:自己做(讲)的东西自己总觉得没有问题,就好比程序员不该给自己的代码做测试一样。
讲的和给出的素材多少都会有出入,有些时候讲起来更是没有条理,翻过来翻过去讲的都不一样,甚至有矛盾。翻视频可不以比翻那样好找,特别是以倍速学习时。真心是头晕眼花了……来一点笔记罢!
组件注册【全注解驱动】
        @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 注解的作用是:
- 标识一个类作为控制器类,这样 Spring 容器在启动时可以自动检测并注册这个控制器。
- 使得这个类能够处理 HTTP 请求,并将其映射到特定的方法上。
- 允许这个类的方法返回视图名称或数据模型,Spring MVC 会根据这些信息生成相应的 HTTP 响应。
        @Service:用于标记一个类作为业务服务类。这个注解主要用于指示一个类提供业务逻辑服务,通常与 Spring 的自动扫描和依赖注入功能一起使用。@Service 注解是 @Component 注解的一个特化,它提供了更多的语义,使得开发者能够更容易地区分不同类型的组件。
  @Service 注解的作用是:
- 标识一个类作为业务服务类,这样 Spring 容器可以自动检测并注册这个服务。
- 便于开发者理解和识别提供业务逻辑的类。
- 允许这个类被其他 Bean 通过依赖注入来使用。
  @Service 注解通常与 @Autowired 或 @Resource 注解一起使用,用于自动注入服务类到其他组件中。
@Repository:用于标记一个类作为数据访问层(DAO)的组件,即用于访问数据库的 Repository 类。
  @Repository 注解的作用是:
- 标识一个类作为数据访问层的组件,这样 Spring 容器可以自动检测并注册这个 Repository。
- 便于开发者理解和识别数据访问层的类。
- 提供了异常翻译的功能,即将数据访问层的异常(如 JDBC 异常)转换为 Spring 的数据访问异常(如 DataAccessException)。
        @Component:用于标记一个类作为 Spring 容器中的一个组件。Spring 容器会自动检测到这些标记了 @Component 的类,并将它们创建为 Bean 实例。@Component 是一个通用注解,可以用于任何 Spring 管理的组件,但它通常用于标记应用程序中的自定义组件。
  @Component 注解的作用是:
- 标识一个类作为 Spring 容器中的一个组件,这样 Spring 容器可以自动检测并注册这个组件。
- 便于开发者理解和识别应用程序中的不同组件。
- 提供了一个通用的注解,用于创建 Spring 管理的 Bean 实例。
        @Import:用于指示一个配置类导入其他配置类或组件。这个注解可以用来组装不同的配置片段,使得应用程序的配置更加模块化和可管理。@Import 注解可以直接应用于 @Configuration 类,或者与 @ComponentScan 注解结合使用。
  @Import 注解的主要作用是:
- 导入其他配置类,使得它们中的 @Bean定义能够在同一个 Spring 容器中生效。
- 导入 Spring 组件,例如使用 @Component、@Service、@Repository或@Controller注解的类。
- 导入 Spring 的 @Configuration类,以实现配置的模块化。
        @ComponentScan:用于指示 Spring 容器在启动时应该自动扫描指定包路径下的类,并查找标记为 @Component 及其子注解(如 @Service、@Repository、@Controller 等)的类,将这些类注册为 Spring 容器中的 Bean。
  @ComponentScan 注解的作用是:
- 指定 Spring 容器在启动时应该扫描的包路径。
- 自动检测并注册标记为 @Component及其子注解的类作为 Spring 容器中的 Bean。
- 支持过滤器和自定义注解,以便更细粒度地控制哪些类被注册为 Bean。
这些多尝试写几遍 Demo 就差不多能记住,毕竟也开是做开发出身的,虽然语言不同但套路大底是相通的……
加油!