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

       加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频教程下载:用ChatGPT玩转海外抖音TikTok

CHATGPT for TikTok是一门前沿课程,旨在帮助您充分发挥TikTok广告活动的全部潜力。随着数字营销的爆炸性增长,企业需要使用先进的工具来保持竞争优势。在这门课程中,您将学习如何利用CHATGPT——一种先进的人工智能工具——来创建与目标受众产…

有没有手机上使用的库存软件

库存软件是一种仓库的信息管理系统,它主要针对出库与入库这些数据进行管理,传统的库存管理都是在电脑上安装一个专门的数据库管理系统进行管理,这也是一种比较成熟的管理方式,那么有没有手机上使用的库存软件。 手机上使用的库存软…

k8s配置configmap指定到容器的指定文件

我们需要将名称为walletkey.properties的文件做成configmap,然后将walletkey.properties文件单独挂载出来到/data/walletkey.properties,且不能覆盖/data目录,具体如下 1、创建configmap configmap文件内容 其中walletkey.properties: >-引…

python语言零基础入门——注释、print()函数、input()函数

目录 一、注释 1.块注释 2.行内注释 3.多行注释 二、打印变量 1.print()函数:输出/打印指定内容 2.input()函数:输入指定内容 三、编程题:个人名片 一、注释 1.块注释 以#开始,直到本行结束都是注释为了保证代码的可读性…

科技的崛起:国内机器视觉蓬勃发展

文 | BFT机器人 在工业4.0的浪潮下,随着科技的蓬勃发展,机器视觉逐渐走入大众视野,机器视觉产品的普及范围也越来越广。 大家知道机器视觉的由来吗? 机器视觉的由来可以追溯到20世纪70年代,美国麻省理工学院&#xff…

STM32、ESP8266与MQTT连接阿里云物联网的串口通信异常解析

STM32、ESP8266与MQTT协议连接阿里云物联网平台时常见的串口通信异常介绍 在构建物联网应用时,STM32、ESP8266与MQTT协议的结合是实现设备与网络间稳定通信的关键。然而,在连接阿里云物联网平台的过程中,串口通信异常成为了一个常见的挑战。…

Docker常见命令学习

Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个轻量级、可移植的容器中,然后发布到任何支持 Docker 的系统上。以下是一些常用的 Docker 命令: docker run: 运行一个容器。例如,docker run -…

机器学习鸢尾花各种模型准确率对比

流程 获取数据集导入需要的包读取数据划分训练集和测试集调用各种模型比较准确率 获取数据集 链接:https://pan.baidu.com/s/1RzZyXsaiJB3e611itF466Q?pwdj484 提取码:j484 --来自百度网盘超级会员V1的分享导入需要的包 import pandas as pd impo…

Linux学习(嵌入式硬件知识)

EMMC eMMC(嵌入式多媒体卡)是一种内置型快闪存储解决方案,常见于嵌入式系统、移动设备和一些消费类电子产品中。它的设计集成了快闪存储器和控制器,并通过MMC(多媒体卡)接口连接到主处理器或主板上。这些是…

回归决策树的构建

回归决策树是一种决策树模型,顾名思义,它用于解决回归问题,即预测连续数值型的输出变量。它基于树状结构,通过一系列内部节点、分支和叶节点来建立数据特征与输出值之间的非线性关系。在构建回归决策树的过程中,数据集…

华为机考入门python3--(17)牛客17- 坐标移动

分类:字符串 知识点: 正则匹配 re.match(pattern, move) 格式字符串,可以在字符串中直接引用变量 f"{x},{y}" 题目来自【牛客】 import re def is_valid_coordinate(move): # 使用正则表达式验证移动是否合法 # ^: …

施耐德 PLC 及模块 ModbusTCP 通信配置方法

1. 通过【I/O扫描器】服务进行读写 相关文档:各模块说明书仅 NOE 网卡模块、部分 CPU 自带的网口支持 优点:不需要额外编程,系统自动周期型读写数据缺点:扫描周期不定,程序无法控制数据刷新的时序 2. 通过内部程序…

java扩展jmeter依赖

前置条件 创建一个maven项目&#xff0c; 引入依赖 <dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_core</artifactId><version>3.2</version> </dependency> <dependency><groupId&g…

NIO学习

文章目录 前言一、主要模块二、使用步骤1.服务器端2.客户端 三、NIO零拷贝(推荐)四、NIO另一种copy总结 前言 NIO是JDK1.4版本带来的功能,区别于以往的BIO编程,同步非阻塞极大的节省资源开销&#xff0c;避免了线程切换和上下文切换带来的资源浪费。 一、主要模块 Selector&a…

【Linux学习】Linux编辑器-vim使用

这里写目录标题 1. &#x1f320;vim的基本概念&#x1f320;2. vim的基本操作&#x1f320;3.vim异常处理&#x1f320;4. vim正常模式的相关命令&#x1f320;5. vim末&#xff08;底&#xff09;行模式相关命令 vi/vim都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本…

达梦数据库一体机树立金融解决方案标杆

达梦数据库一体机自问世以来&#xff0c;获得众多行业用户的高度关注&#xff0c;并率先在金融行业吹响冲锋号角&#xff0c;实现多个重大项目的落地应用。近日&#xff0c;珠海华润银行股份有限公司基于达梦数据库一体机 I 系列的《数据库一体机银行多业务系统集中部署解决方案…

(保姆级教学)跨站请求伪造漏洞

1. CSRF漏洞 CSRF&#xff08;Cross-site request forgery&#xff09;跨站请求伪造&#xff0c;也被称为One Click Attack 或者Session Riding&#xff0c;通常缩写为CSRF或者XSRF&#xff0c;是一种对网站的恶意利用。尽管听起来像跨站脚本&#xff08;XSS&#xff09;&…

运筹优化领域内精确算法、启发式算法和深度强化学习算法的优劣

在运筹优化领域内&#xff0c;精确算法、启发式算法和深度强化学习算法各有优劣。以下是它们的主要特点和比较&#xff1a; 精确算法&#xff1a; 优点&#xff1a; 能够保证找到问题的最优解或最优解的近似解。在问题规模较小且具有明确的数学模型时&#xff0c;通常具有较高的…

数据结构和算法:动态规划

初探动态规划 动态规划&#xff08;dynamic programming&#xff09;是一个重要的算法范式&#xff0c;它将一个问题分解为一系列更小的子问题&#xff0c;并通过存储子问题的解来避免重复计算&#xff0c;从而大幅提升时间效率。 例题&#xff1a;爬楼梯 给定一个共有 &…

深入理解CSS3 box-sizing属性:重塑盒子模型,精准控制元素尺寸

在CSS世界中&#xff0c;理解并熟练运用box-sizing属性是构建精准布局的关键一步。这个属性允许我们重新定义元素的尺寸计算方式&#xff0c;从而更好地控制内容、内边距和边框对元素总尺寸的影响。本文将深入剖析box-sizing属性的工作原理、不同取值及其应用场景&#xff0c;帮…