当前位置: 首页 > news >正文

@SpringBootApplication 注解

什么是 @SpringBootApplication

@SpringBootApplication 是 Spring Boot 提供的一个核心注解,它是一个组合注解,用于简化 Spring Boot 应用程序的配置。这个注解通常标注在主类上,用于标识一个 Spring Boot 应用的入口。通过这个注解,开发者可以更方便地启动和配置 Spring Boot 应用程序。

@SpringBootApplication 的组成

@SpringBootApplication 其实是一个复合注解,它包含了以下三个注解:

  1. @SpringBootConfiguration
  2. @EnableAutoConfiguration
  3. @ComponentScan

让我们分别看看这三个注解的作用。

1. @SpringBootConfiguration

@SpringBootConfiguration 是一个特定于 Spring Boot 的注解,实际上是 Spring Framework 中 @Configuration 注解的一个特化版本。它标识一个类为配置类,并允许在该类中定义 @Bean 方法以注册 Bean 到 Spring 容器中。

@SpringBootConfiguration
public class MyAppConfiguration {@Beanpublic MyBean myBean() {return new MyBean();}
}
2. @EnableAutoConfiguration

@EnableAutoConfiguration 是 Spring Boot 的关键注解之一。它启用 Spring Boot 的自动配置机制,尝试根据类路径中的依赖项和应用程序中定义的 Bean 自动配置 Spring 应用程序。它大大减少了开发者需要显式配置的代码量。

@EnableAutoConfiguration
public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}
}
3. @ComponentScan

@ComponentScan 注解告诉 Spring 要扫描指定的包及其子包,以查找带有 @Component@Service@Repository 等注解的类,并将它们自动注册为 Spring 应用程序上下文中的 Bean。

@ComponentScan(basePackages = "com.example.myapp")
public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}
}
@SpringBootApplication 的使用

结合这三个注解,@SpringBootApplication 简化了配置,使得应用程序更易于开发和维护。下面是一个典型的 Spring Boot 应用程序入口类的示例:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}
}

在这个例子中,@SpringBootApplication 注解等同于同时使用 @SpringBootConfiguration@EnableAutoConfiguration@ComponentScan。这使得开发者可以专注于业务逻辑,而无需为基础配置费心。

深入理解 @EnableAutoConfiguration

@EnableAutoConfiguration 注解是 Spring Boot 自动配置的核心。它会根据应用程序类路径中的依赖项,自动配置相关的 Bean。例如,如果类路径中存在 spring-boot-starter-web 依赖,那么自动配置将为应用程序配置一个嵌入式的 Tomcat 服务器。

自动配置通过 META-INF/spring.factories 文件中定义的 EnableAutoConfiguration 条目来实现:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration

通过这种方式,Spring Boot 会加载并应用适当的配置类,使开发者无需手动配置这些组件。

自定义自动配置

虽然自动配置非常强大,但有时开发者需要自定义某些配置。可以通过以下几种方式实现:

  1. 排除特定的自动配置类

    可以使用 exclude 属性排除特定的自动配置类:

    @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
    public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}
    }
    
  2. 自定义 Bean

    如果需要自定义某个自动配置的 Bean,可以在配置类中定义相应的 @Bean 方法。例如,自定义 DataSource

    @SpringBootApplication
    public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}@Beanpublic DataSource dataSource() {return new HikariDataSource();}
    }
    
总结

@SpringBootApplication 注解是 Spring Boot 提供的一个强大工具,它结合了多个核心注解,简化了应用程序的配置和启动过程。通过自动配置和组件扫描,开发者可以快速构建和部署生产级别的应用程序。而且,Spring Boot 还允许开发者通过多种方式自定义配置,以满足特定需求。

相关文章:

@SpringBootApplication 注解

什么是 SpringBootApplication SpringBootApplication 是 Spring Boot 提供的一个核心注解,它是一个组合注解,用于简化 Spring Boot 应用程序的配置。这个注解通常标注在主类上,用于标识一个 Spring Boot 应用的入口。通过这个注解&#xff…...

java项目总结4

目录 1.正则表达式 2.爬虫 3.时间 4.包装类 5.工具类之Arrays 6.Lambda 1.正则表达式 用于验证字符串是否满足自己所需要的规则。方法:matches 注意:\在Java中有特殊涵义,是将其它的意思本来化,假设"是用来引…...

JavaScript中的数组方法总结+详解

##JavaScript中的数组方法总结详解 用来总结和学习,便于自己查找 文章目录 一、数组是什么? 二、改变原数组的api方法?          2.1 push() 在末端添加          2.2 pop&#xff0…...

环境变量Path

PATH 是一个环境变量,它在操作系统中扮演着非常重要的角色。它定义了系统在查找可执行文件时应该搜索的目录列表。当你在命令行中输入一个命令时,操作系统会按照 PATH 变量中定义的目录顺序来查找这个命令对应的可执行文件。 主要作用 查找可执行文件&a…...

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(四)支持json和xml的显示

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、相应的界面前端代码 <template><div class"formDesign"><FlowDesign :process"process" :fields"fields" :readOnly"readOnly&quo…...

【k8s安装redis】k8s安装单机版redis实现高性能高可用

文章目录 简介一.条件及环境说明&#xff1a;二.需求说明&#xff1a;三.实现原理及说明四.详细步骤4.1.创建configmap 配置文件4.2.创建StatefulSet 配置4.3.创建service headless 配置 五.安装说明 简介 本文将根据在k8s环境中搭建【伪】单机模式的redis实例。由于共享存储的…...

Scala 数据类型

Scala 数据类型 Scala 是一种多范式的编程语言&#xff0c;它结合了面向对象和函数式编程的特点。在 Scala 中&#xff0c;数据类型是构建复杂程序的基础。本文将详细介绍 Scala 中的数据类型&#xff0c;包括其分类、特点以及使用方法。 数据类型分类 Scala 中的数据类型可…...

Java Executors类的9种创建线程池的方法及应用场景分析

在Java中&#xff0c;Executors 类提供了多种静态工厂方法来创建不同类型的线程池。在学习线程池的过程中&#xff0c;一定避不开Executors类&#xff0c;掌握这个类的使用、原理、使用场景&#xff0c;对于实际项目开发时&#xff0c;运用自如&#xff0c;以下是一些常用的方法…...

LY/T 3359-2023 耐化学腐蚀高压装饰层积板检测

耐化学腐蚀高压装饰层积板是指用酚醛树脂浸渍的层状植物纤维材料为基材&#xff0c;与涂布以丙烯酸树脂为主体的装饰纸的饰面层&#xff0c;在高温高压下层积压制而成的具有化学腐蚀功能的高压装饰层积板。 LY/T 3359-2023 耐化学腐蚀高压装饰层积板检测项目&#xff1a; 测试…...

【linux/shell】如何创建脚本函数库并在其他脚本中调用

目录 1. 创建脚本库文件 2. 修改脚本库权限&#xff0c;使脚本库可执行 3. 在其他脚本中调用脚本库 4. 使用环境变量或.bashrc 5. 使用Shellcheck 6. 编写注释及说明文档 在Shell中创建和使用脚本库通常涉及以下几个步骤&#xff1a; 1. 创建脚本库文件 脚本库通常是包…...

Instruct-GS2GS:通过用户指令编辑 GS 三维场景

Paper: Instruct-GS2GS: Editing 3D Gaussian Splats with Instructions Introduction: https://instruct-gs2gs.github.io/ Code: https://github.com/cvachha/instruct-gs2gs Instruct-GS2GS 复用了 Instruct-NeRF2NeRF 1 的架构&#xff0c;将基于 NeRF 的三维场景编辑方法迁…...

disql使用

SQL 交互式查询工具 | 达梦技术文档 进入bin目录&#xff1a;cd /opt/dmdbms/bin 启动disql&#xff1a;./disql&#xff0c;然后输入用户名、密码 sh文件直接使用disql&#xff1a; 临时添加路径到PATH环境变量&#xff1a;在当前会话中临时使用disql命令而无需每次都写完整…...

SpringBoot Mybatis-Plus 日志带参数

SpringBoot Mybatis-Plus 日志带参数 1 实现代码2 测试结果 在Spring Boot中&#xff0c;MyBatis插件机制通过拦截器&#xff08;Interceptor&#xff09;来实现。拦截器允许开发人员在执行SQL语句的各个阶段&#xff08;如SQL语句创建、参数处理、结果映射等&#xff09;插入自…...

【WebGIS平台】传统聚落建筑科普数字化建模平台

基于上述概括出建筑单体的特征部件&#xff0c;本文利用互联网、三维建模和地理信息等技术设计了基于浏览器/服务器&#xff08;B/S&#xff09;的传统聚落建筑科普数字化平台。该平台不仅实现了对传统聚落建筑风貌从基础到复杂的数字化再现&#xff0c;允许用户轻松在线构建从…...

Zookeeper分布式锁原理说明【简单易理解】

Zookeeper 非公平锁/公平锁/共享锁 。 1.zookeeper分布式锁加锁原理 如上实现方式在并发问题比较严重的情况下&#xff0c;性能会下降的比较厉害&#xff0c;主要原因是&#xff0c;所有的连接都在对同一个节点进行监听&#xff0c;当服务器检测到删除事件时&#xff0c;要通知…...

去除Win32 Tab Control控件每个选项卡上的深色对话框背景

一般情况下&#xff0c;我们是用不带边框的对话框来充当Tab Control的每个选项卡的内容的。 例如&#xff0c;主对话框IDD_TABBOX上有一个Tab Control&#xff0c;上面有两个选项卡&#xff0c;第一个选项卡用的是IDD_DIALOG1充当内容&#xff0c;第二个用的则是IDD_DIALOG2。I…...

iis部署前后端分离项目(React前端,Node.js后端)

iis虽然已经有点过时&#xff0c;但不少用户还在用&#xff0c;故总结一下。 1. 安装iis 如果电脑没有自带iis管理器&#xff0c;打开控制面板->程序->启用或关闭Windows功能&#xff0c;勾选iis安装即可 2. 部署前端项目 打开iis&#xff0c;添加网站&#xff0c;物理…...

【前端项目笔记】9 数据报表

数据报表 效果展示&#xff1a; 在开发代码之前新建分支 git checkout -b report 新建分支report git branch 查看分支 git push -u origin report 将本地report分支推送到云端origin并命名为report 通过路由的形式将数据报表加载到页面中 渲染数据报表基本布局 面包屑导航…...

等保测评推动哈尔滨数字化转型中的安全保障

在数字经济的浪潮下&#xff0c;哈尔滨作为东北老工业基地的核心城市&#xff0c;正积极推动数字化转型&#xff0c;以创新技术驱动产业升级和经济发展。网络安全等级保护测评&#xff08;简称“等保测评”&#xff09;作为国家网络安全战略的重要组成部分&#xff0c;为哈尔滨…...

#pragma 指令

#pragma 指令作用是设定编译器的状态或者是指示编译器完成一些特定的动作 message 参数能够在编译信息输出窗口中输出相应的信息 #pragma message(“消息文本”) code_seg参数能够设置程序中函数代码存放的代码段&#xff0c;当我们开发驱动程序的时候就会使用到它 #pragma…...

NVIDIA Profile Inspector深度指南:解锁显卡隐藏性能的完整教程

NVIDIA Profile Inspector深度指南&#xff1a;解锁显卡隐藏性能的完整教程 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 还在为游戏画面撕裂、输入延迟高、帧率不稳定而烦恼吗&#xff1f;NVIDIA Pr…...

现代生产级微服务+容器治理完整技术栈与架构方案详解(国内主流完整云原生微服务闭环架构)

文章目录一、业务开发层&#xff08;代码基座&#xff0c;所有业务的底层核心&#xff09;1.1 核心开发框架基座1.2 持久层与分库分表框架1.3 统一认证授权体系&#xff08;企业必备&#xff09;二、微服务治理层&#xff08;保障高可用&#xff0c;简历核心亮点&#xff09;2.…...

教育科技项目如何利用Taotoken平衡AI功能效果与研发成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 教育科技项目如何利用Taotoken平衡AI功能效果与研发成本 在在线教育平台的发展过程中&#xff0c;引入AI驱动的功能&#xff0c;如…...

Navicat密码解密技术方案:数据库连接密码恢复与安全分析

Navicat密码解密技术方案&#xff1a;数据库连接密码恢复与安全分析 【免费下载链接】navicat_password_decrypt 忘记navicat密码时,此工具可以帮您查看密码 项目地址: https://gitcode.com/gh_mirrors/na/navicat_password_decrypt 1. 问题背景与痛点分析 在数据库管理…...

VirtIO-GPU虚拟化图形加速:从零构建到实战部署

1. VirtIO-GPU虚拟化图形加速入门指南 第一次接触VirtIO-GPU时&#xff0c;我完全被这个技术概念搞懵了。简单来说&#xff0c;它就像是在虚拟化环境中给每台虚拟机分配一个"虚拟显卡"&#xff0c;让它们能共享物理显卡的3D加速能力。想象一下&#xff0c;你有一台强…...

[具身智能-628]:树莓派 4B/5、RK3568/RK3588 开发板的语音传感器接口

树莓派 4B/5、RK3568/RK3588 开发板连接语音传感器&#xff08;麦克风&#xff09;&#xff0c;主要通过 I2S/PDM/TDM 数字接口、USB、模拟 Mic 口、HAT / 扩展板 四大类方式。下面按平台详细说明硬件接口、引脚定义与常用方案。一、树莓派 4B / 5 语音接口1. 板载原生接口无板…...

2025年八大网盘直链下载助手:告别限速,轻松获取高速下载链接

2025年八大网盘直链下载助手&#xff1a;告别限速&#xff0c;轻松获取高速下载链接 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中…...

CANN/ge Tiling下沉特性分析

Tiling 下沉&#xff08;Tiling Sink&#xff09;特性分析 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型…...

OpenCode集成Cursor Pro:通过代理架构实现AI编程工具的无缝桥接

1. 项目概述&#xff1a;打破限制&#xff0c;将 Cursor Pro 无缝接入 OpenCode 如果你和我一样&#xff0c;既是 Cursor Pro 的深度用户&#xff0c;又对 OpenCode 这个开源、可扩展的 AI 编程环境情有独钟&#xff0c;那你一定遇到过那个令人头疼的“二选一”困境。Cursor 的…...

gpt4local:用OpenAI API语法在本地高效运行开源大模型

1. 项目概述&#xff1a;在本地跑一个“ChatGPT”有多简单&#xff1f; 如果你和我一样&#xff0c;对大型语言模型&#xff08;LLM&#xff09;既充满好奇&#xff0c;又对数据隐私、API调用成本和网络延迟心存顾虑&#xff0c;那么“本地部署”这条路子&#xff0c;你迟早会…...