也是学得头晕眼花,终于知道学有多么难了,更知道教有多么难了......
各位大神们出的教程终归和正规出版社还是差距的,我觉得是没有"审定",这对于大多数做教程的人来说这应该通病:自己做(讲)的东西自己总觉得没有问题,就好比程序员不该给自己的代码做测试一样。
讲的和给出的素材多少都会有出入,有些时候讲起来更是没有条理,翻过来翻过去讲的都不一样,甚至有矛盾。翻视频可不以比翻那样好找,特别是以倍速学习时。真心是头晕眼花了......来一点笔记罢!
组件注册【全注解驱动】
**@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 就差不多能记住,毕竟也开是做开发出身的,虽然语言不同但套路大底是相通的......
加油!