【Spring Boot 初识丨四】主应用类

news2024/12/24 9:04:41

上一篇讲了 Spring Boot 的启动器
本篇来讲一讲 主程序类 Main Application Class 及注解
Spring Boot 初识:
【Spring Boot 初识丨一】入门实战
【Spring Boot 初识丨二】maven
【Spring Boot 初识丨三】starter

主程序类

  • 一、定义
  • 二、注解
    • 2.1 @SpringBootApplication
    • 2.2 @EnableAutoConfiguration
    • 2.3 @ComponentScan
    • 2.4 @Configuration

一、定义

  Spring Boot的 主程序类 Main Application Class是包含用于启动Spring ApplicationContext的公共静态void main()方法的类。默认情况下,如果未显式指定主类,则Spring将在编译时在类路径中搜索一个,如果找不到一个或多个,则启动失败 。
   主应用程序类建议定位在根包中,而不是其他的类。注解通常放在主类上,它隐式地为某些项定义了一个基本‘搜索包’。
   例如:如果正在编写一个JPA应用程序,则使用@SpringBootApplication 注释类的包来搜索@Entity 项。
   使用根包还允许组件扫描仅应用当前。

🔔提示
   如果不想使用@SpringBootApplication ,它导入的@EnableAutoConfiguration@ComponentScan 注解定义了此行为,也可以使用这些注解替代。

二、注解

2.1 @SpringBootApplication

@SpringBootApplication 等效于使用@Configuration @EnableAutoConfiguration @ComponentScan

  • @EnableAutoConfiguration: 启用Spring Boot 的自动配置机制。
  • @ComponentScan@Component在应用程序所在的包上启用扫描。
  • @Configuration:允许在上下文中注册额外的 beans 或导入额外的配置类

   @SpringBootApplication是一个注解,用于标注一个类作为Spring Boot应用程序的主入口。
   它包含了一些默认的配置和自动配置 :

  1. 开启了Spring Boot的自动配置功能,可以自动配置一些常用的组件和依赖。
  2. 开启了Spring MVC的Web支持,提供了一个简单的RESTful API接口。
  3. 开启了Spring Security的安全认证功能,提供了基本的用户认证和授权机制
  4. 开启了日志记录功能,可以使用SLF4J或Logback等日志框架进行日志输出。
  5. 开启了Thymeleaf模板引擎的支持,提供了一种简单易用的模板语法。

   通过使用@SpringBootApplication注解,可以快速搭建一个基于Spring Boot的应用程序,并且不需要手动配置大量的组件和依赖。

2.2 @EnableAutoConfiguration

   EnableAutoConfiguration是Spring Boot的一个自动配置类,尝试猜测和配置您可能需要的 bean。自动配置类通常根据您的类路径和您定义的 bean 应用。它的作用是在应用程序启动时自动配置一些常用的组件和依赖。
   EnableAutoConfiguration会根据应用程序的类路径、环境变量、配置文件等信息,自动配置一些常用的组件和依赖,例如Tomcat、MySQL、Redis等。这样,就可以快速搭建一个基本的应用程序,而不需要手动配置大量的组件和依赖。
   🔔注意EnableAutoConfiguration并不是所有的应用程序都需要使用的,有些应用程序可能需要更多的自定义配置。因此,可以根据自己的需求来选择是否使用。

可选元素

修饰符和类型可选元素描述
Class<?>[]exclude排除特定的自动配置类,这样它们就永远不会被应用。
String[]excludeName排除特定的自动配置类名,这样它们就永远不会被应用。

字段:

修饰符和类型字段描述
static final StringENABLED_OVERRIDE_PROPERTY启用自动配置时可用于覆盖的环境属性。

2.3 @ComponentScan

   ComponentScan注解是Spring框架中的一个注解,用于告诉Spring扫描哪些包下的类。它的作用是从约定的扫描路径中,识别标注了组件注册注解的类,并且把这些类自动注册到Spring IoC容器中 。

   在使用@ComponentScan注解时,需要将其与 @Configuration注解一起使用,指定Spring扫描注解的package。

嵌套类:

修饰符和类型Class描述
static @interfaceComponentScan.Filter声明要用作包含过滤器或排除过滤器的类型过滤器。

可选元素

修饰符和类型可选元素描述
Class<?>[]basePackageClassesbasePackages() 的类型安全替代品,用于指定要扫描带注释组件的包。
String[]basePackages用于扫描带注释组件的基础包。
ComponentScan.Filter[]excludeFilters指定哪些类型不符合组件扫描条件。
ComponentScan.Filter[]includeFilters指定哪些类型符合进行组件扫描。
booleanlazyInit指定是否应注册扫描的 bean以进行延迟初始化。
Class<? extends BeanNameGenerator>nameGenerator用于命名 Spring 容器中检测到的组件的BeanNameGenerator类。
StringresourcePattern控制符合组件检测条件的类文件。
ScopedProxyModescopedProxy指示是否应为检测到的组件生成代理,当以代理样式使用范围时,这可能是必需的。
Class<? extends ScopeMetadataResolver>scopeResolver用于解析检测到的组件的作用域的ScopeMetadataResolver
booleanuseDefaultFilters指示是否应启用对用@Component @Repository、@Service或@Controller注释的类的自动检测。
String[]valuebasePackages() 的别名

2.4 @Configuration

  Configuration是Spring Boot中的一个注解,用于标识一个类为配置类,它可以被Spring容器扫描并加载其中的配置信息。@Configuration注解通常与@Bean注解一起使用,用于定义Spring Bean。@Configuration注解的类可以包含多个@Bean注解的方法,每个方法都会返回一个Spring Bean实例。

可选元素

修饰符和类型可选元素描述
booleanenforceUniqueMethods指定@Bean方法是否需要具有唯一的方法名称,否则会引发异常以防止意外重载。
booleanproxyBeanMethods指定@Bean方法是否应该代理以强制执行 bean 生命周期行为
Stringvalue显式指定与@Configuration类关联的 Spring bean 定义的名称 。

在这里插入图片描述

  如果喜欢的话,欢迎 🤞关注 👍点赞 💬评论 🤝收藏  🙌一起讨论
  你的评价就是我✍️创作的动力!					  💞💞💞

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

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

相关文章

秋招指南(菜狗版)-Java前/后端开发方向

期末考试结束&#xff0c;菜的人还在享受假期&#xff0c;即将进大厂的已经在学习了&#xff08;狗头&#xff09; 作为经受去年秋招摧残的老学姐&#xff0c;给大家带来一些秋招学习的小经验&#xff0c;希望可以帮助大家避免一些求职路上的坑&#xff0c;能快速顺利地找到心仪…

论文笔记与实战:对比学习方法MOCO

目录 1. 什么是MOCO2. MOCO是干吗用的3. MOCO的工作原理3.1 一些概念1. 无监督与有监督的区别2. 什么是对比学习3. 动量是什么 3.2 MOCO工作原理1. 字典查找2. 如何构建一个好的字典3. 工作流程 3.3 &#xff08;伪&#xff09;代码分析 4. 其他一些问题5. MOCO v2和MOCO v35.1…

Nginx【反向代理负载均衡动静分离】--下

Nginx【反向代理负载均衡动静分离】–下 Nginx 工作机制&参数设置 master-worker 机制 示意图 图解 一个master 管理多个worker 一说master-worker 机制 ● 争抢机制示意图 图解 一个master Process 管理多个worker process, 也就是说Nginx 采用的是多进程结构, 而…

字节8年经验总结:13 条自动化测试框架设计原则(建议收藏)

1.代码规范 测试框架随着业务推进&#xff0c;必然会涉及代码的二次开发&#xff0c;所以代码编写应符合通用规范&#xff0c;代码命名符合业界标准&#xff0c;并且代码层次清晰。特别在大型项目、多人协作型项目中&#xff0c;如果代码没有良好的规范&#xff0c;那么整个框…

leetcode109. 有序链表转换二叉搜索树(java)

有序链表转换二叉平衡搜索树 leetcode109. 有序链表转换二叉搜索树题目描述 解题思路代码演示链表和二叉树专题 leetcode109. 有序链表转换二叉搜索树 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/convert-sorted-lis…

QCameraViewfinder的使用

目录 引言核心代码完整代码 引言 本文是简单使用Qt快速使用摄像头完成截图等工作&#xff0c;主要涉及QCamera、QCameraViewfinder、QCameraImageCapture这三个类。QCamera通过相机的信息创建&#xff0c;用于控制开始接收图形、停止接收图像。QCameraViewfinder则是图像的展示…

(1Gbit)MT28EW01GABA1LPC-0SIT、MT28EW01GABA1HPC-0SIT FLASH - NOR 存储器

MT28EW01GABA1LPC-0SIT、MT28EW01GABA1HPC-0SIT 1Gbit并行NOR闪存器件具有较高的密度、就地执行 (XiP) 性能和架构灵活性&#xff0c;可满足汽车、消费类和移动产品的设计要求。该器件非常适合用于GPS/导航、汽车后视摄像头、手机、智能手机和电子阅读器。该器件还具有较宽的温…

【小沐学Python】Python实现turtle绘画

文章目录 1、简介2、接口说明2.1 海龟动作2.1.1 移动和绘制2.1.2 获取海龟的状态 2.2 画笔控制2.2.1 绘图状态2.2.2 颜色控制2.2.3 填充2.2.4 更多绘图控制 2.3 TurtleScreen/Screen 方法2.3.1 窗口控制2.3.2 使用屏幕事件2.3.3 Screen 专有方法 3、示例测试3.1 Turtle star3.2…

关于proxy的较深入研究

关于proxy的较深入研究 proxy是什么控制台打印proxy&#xff0c;展示一下vue3中的prxoy和es6的proxy有何不同&#xff1f;proxy对js和vue3来说有什么含义&#xff1f;proxy的封装机制 proxy是什么 Proxy是ES6中新增的一个对象&#xff0c;它可以用来代理另一个对象&#xff0c…

微服务eureka和nacos

服务远程调用 /*** 创建RestTemplate并注入Spring容器* return*/Beanpublic RestTemplate restTemplate(){return new RestTemplate();} Autowiredprivate RestTemplate restTemplate;public Order queryOrderById(Long orderId) {// 1.查询订单Order order orderMapper.fin…

关于调试别人的bug中发现的细节问题1:Switch...case...分支,永远只选择第一个分支

1、Switch…case…分支&#xff0c;永远只选择第一个分支&#xff1a; 原因&#xff1a;switch()里面的不是传入的变量&#xff0c;m_curWindowType是个成员变量&#xff0c;一直是初始值。他喵的&#xff0c;不知道谁写的下面的代码&#xff0c;大晚上的我也没有细看&#xff…

13.3寸_Wifi标签功耗电流计算-单面屏幕-1.8V的Flash测试

13.3寸Wifi标签不工作的时候电流的消耗主要来自两部分&#xff1a; 待机时&#xff0c;醒来监听时。经过测量&#xff0c;13.3寸Wifi标签的待机电流是7.13uA , 醒来监听的峰值电流是51.6 mA。13.3寸Wifi标签系统设定每间隔1秒醒来一次监听是否有唤醒数据。充电锂电池电池的容量…

00后跳槽到我们公司拿了25K,“躺平”两个字骗了我好久···

都说00后已经躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。前段时间我们部门就来了个00后&#xff0c;工作都还没两年&#xff0c;跳到我们公司起薪25K&#xff0c;都快接近我了。 后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。最近和他…

【配置环境】Windows下C/C++第三方库管理工具vcpkg安装和使用

一&#xff0c;vcpkg简介 vcpkg是微软公司开发的一个开源C包管理工具&#xff0c;它可以很方便的帮助您在 Windows、 Linux 和 MacOS 上下载&#xff0c;编译和安装C 第三方库。它具有自动解决依赖关系的能力&#xff0c;并且支持多种目标架构和平台。提供了超过1500个C库的预…

架构师基础篇之如何画架构图C4模型

1. 前言 本文将给大家介绍一种简洁明了软件架构可视化模型——C4模型&#xff0c;并手把手教大家如何使用代码绘制出精美的C4架构图。 阅读本文之后&#xff0c;读者画的架构图将会是这样的&#xff1a; 注&#xff1a;该图例仅作绘图示例使用&#xff0c;不确保其完整性、可…

❤ 关于以太网没有有效的ip配置问题解决方法

❤ 关于以太网没有有效的ip配置问题解决方法 错误提示 解决方法 一&#xff0c;检查IP地址是否为自动获取 1&#xff0c;首先右键任务栏右下角的网络图标点击进入"网络和共享中心",然后点击"更改适配器设置"。 2&#xff0c;在适配器界面右键"本…

异常数据检测 | Python实现孤立森林(IsolationForest)异常数据检测

文章目录 文章概述模型描述源码分享学习小结文章概述 异常数据检测 | Python实现孤立森林(IsolationForest)异常数据检测 模型描述 IsolationFores算法它是一种集成算法(类似于随机森林)主要用于挖掘异常(Anomaly)数据,或者说离群点挖掘,总之是在一大堆数据中,找出与其它数据…

***杨辉三角_yyds_LeetCode_python***

1.题目描述&#xff1a; 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows …

第3章“程序的机器级表示”:异类的数据结构

文章目录 概述3.9.1 结构3.9.2 联合 概述 C提供了两种将不同类型的对象结合到一起来创建数据类型的机制&#xff1a;结构&#xff08;structure&#xff09;&#xff0c;用关键字 struct 来声明&#xff0c;将多个对象集合到一个单位中&#xff1b;联合&#xff08;union&…

Java网络开发(Asynchronous)—— 从 Jsp 到 Ajax 的 axios 到 vue 同步请求 到 异步请求

目录 引出如果想做bilibili边看视频边评论怎么搞&#xff1f;Ajax是啥&#xff1f;& axios的语法1. Ajax&#xff08;Asynchronous JavaScript And XML&#xff09;简介2. axios语法 及其与 java后端交互&#xff08;1&#xff09;get请求&#xff08;2&#xff09;post请求…