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.mfbz.cn/a/557357.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

超详细Web程序设计基础知识,新手设计师快收藏!

Web 程序设计是现代计算机科学的核心领域之一。它涉及到开发各种不同类型的网站和应用程序,从基本的静态页面到复杂的动态应用程序。本文将介绍 Web 程序设计的基础知识,包括 JavaScript、HTML、CSS 等方面的内容。 1、JavaScript JavaScript 是一种脚…

【Web】Dest0g3 520迎新赛 题解(全)

目录 phpdest EasyPHP SimpleRCE funny_upload EasySSTI middle PharPOP ezip NodeSoEasy Really Easy SQL&easysql EzSerial ljctr phpdest 尝试打pearcmd,但似乎没有写文件的权限 ?config-create/&file/usr/local/lib/php/pearcmd.php&a…

C++学习————第七天(初始化列表、static,友元,内部类)

今天已经是C学习第七天,希望这篇文章能够给大家带来更多的帮助,相应文章都放在C学习专栏里面。 C学习————第五天(构造函数 析构函数 拷贝构造函数)-CSDN博客 C学习————第六天 (运算符重载 const成员 取地址&…

[渗透测试学习] Monitored-HackTheBox

Monitored-HackTheBox 信息搜集 nmap扫描一下端口 nmap -sV -sC -v --min-rate 1000 10.10.11.248扫描结果如下 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u3 (protocol 2.0) 80/tcp open http Apache httpd …

阿里巴巴拍立淘API让购物更智能:图片搜索商品,信息快速呈现,个性化推荐更精准

随着互联网的不断发展,电子商务已经成为人们日常生活中不可或缺的一部分。然而,传统的文本搜索方式在购物过程中往往存在信息不匹配、效率低下等问题。为了解决这些问题,阿里巴巴推出了拍立淘API,通过图片搜索商品的方式&#xff…

graphviz使用

安装 brew install graphviz测试 https://github.com/martisak/dotnets?tabreadme-ov-file

德鲁伊参数踩坑之路

上文说到 Druid德鲁伊参数调优实战,也正因此次优化,为后续问题埋下了伏笔 背景 2024/04/16日,业务反馈某个定时统计的数据未出来,大清早排查定位是其统计任务跑批失败,下面给一段伪代码 // 无事务执行 public void …

05 JavaScript学习:语法

JavaScript 是一种动态类型的脚本语言,广泛用于网页开发和构建交互式网页。JavaScript 的语法相对简单,但功能强大,它可以在客户端执行,并与HTML和CSS一起构建交互式的网页。 JavaScript 字面量 在 JavaScript 中,字…

吴恩达机器学习笔记:第 7 周-12支持向量机(Support Vector Machines)12.4-12.6

目录 第 7 周 12、 支持向量机(Support Vector Machines)12.4 核函数 112.5 核函数 212.6 使用支持向量机 第 7 周 12、 支持向量机(Support Vector Machines) 12.4 核函数 1 回顾我们之前讨论过可以使用高级数的多项式模型来解决无法用直线进行分隔的分类 问题: …

Octopus+: An RDMA-Enabled Distributed Persistent Memory File System——泛读笔记

TOS 2021 Paper 分布式元数据论文阅读笔记整理 问题 非易失性存储器(NVM)和远程直接存储器访问(RDMA)在存储和网络硬件中提供了极高的性能。然而,现有的分布式文件系统隔离了文件系统和网络层,而且分层的…

【C++】C++11右值引用

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.什么是左值&&…

使用名称空间共享集群

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📘相关专栏Rust初阶教程、go语言基础系列、spring教程等,大家有兴趣的可以看一看 📙Jav…

【五十一】【算法分析与设计】KMP 算法,KMP 算法的作用,KMP 算法流程,KMP 算法证明,KMP 算法代码

目录 KMP 算法的作用,解决的问题 KMP 算法的流程 Next 数组 KMP 算法正式过程 KMP 算法的证明过程 Next 数组的求法 Next 数组求法的证明过程 KMP 算法代码 结尾 KMP 算法的作用,解决的问题 1. 首先给你一个字符串 str,然后又给你…

mPEG-Succinimidyl Carboxyl Methyl ester,135649-01-3可以制备出多种生物成像试剂

【试剂详情】 英文名称 mPEG-SCM,Methoxy PEG SCM, mPEG-Succinimidyl Carboxyl Methyl ester 中文名称 聚乙二醇单甲醚琥珀酰亚胺乙酸酯, 甲氧基-聚乙二醇-琥珀酰亚胺乙酸酯 CAS号 135649-01-3 外观性状 由分子量决定,液体…

交流电220V转9V直流电芯片WT5105

交流电220V转9V直流电芯片WT5105 WT5105设计一个电路。电路的输入端连接到220V交流电,通过一个整流桥进行整流,将交流电转换为脉冲直流电。然后,经过电容滤波后,得到较为平滑的直流电。这个直流电进入WT5105的输入端。 在WT5105的…

揭秘1688选品高阶玩法,90%的人都没注意到(下篇)

店雷达继续为各位商家揭秘1688选品7大高阶玩法,错过前4个选品场景思路干货的商友们可以点击上篇查看哦。希望帮助各位找到符合自己选品方向,提供一些新的思路帮助。☛《揭秘1688选品高阶玩法,90%的人都没注意到(上篇)》…

2W 6KVDC 隔离双输出 DC/DC 电源模块——TPJ-2W 系列,可以用于医疗仪器和设备中

TPJ-2W一款有超高隔离电压的电源模块,主要用于隔离度要求高的如医疗仪器和设备,特别在安全设备的应用中起着相当重要的作用,它的绝缘设计完全能满足对隔离电压要求超过6KVDC的应用,在额定负载2W的情况下,工作温度范围为…

鸿蒙原生应用元服务-访问控制(权限)开发场景与权限声明

一、场景介绍 应用的APL(Ability Privilege Level)等级分为normal、system_basic和system_core三个等级,默认情况下,应用的APL等级都为normal等级。权限类型分为system_grant和user_grant两种类型。 二、配置文件权限声明 应用需要…

基于springboot+vue花店商场管理系统

项目介绍: 基于springbootvue花店商场管理系统 开发系统:Windows 架构模式:MVC/前后端分离 JDK版本:Java JDK1.8 开发工具:IDEA 数据库版本: mysql8.0 数据库可视化工具: navicat 服务器&#…

腾讯EdgeOne产品测评体验—更快更强更安全,安全我选EdgeOne

腾讯EdgeOne产品测评体验—更快更强更安全,安全我选EdgeOne 王婆的瓜可甜? 自 23 年 8 月份 EdgeOne 开放订阅套餐后,腾讯云用户使用 EdgeOne 来为自己网站进行加速和防护的站点数量,呈现爆发式增长趋势。 金融服务业受到的 Web…
最新文章