IDEA开发SpringBoot项目基础入门教程。包括Spring Boot简介、IDEA创建相关工程及工程结构介绍、书写配置文件、Bean对象管理等内容

news2024/12/24 9:59:36

文章目录

  • 0. 关于本文
  • 1. 概述
    • 1.1 Spring简介
    • 1.2 Spring Boot简介
    • 1.3 传统的开发方式
      • 1.3.1 简述
      • 1.3.2 缺点
    • 1.4 Spring Boot的优点
  • 2. 创建一个简单的Spring Boot应用程序
    • 2.1 在IDEA创建项目
    • 2.2 pom配置文件内容
    • 2.3 启动类
    • 2.4 创建Controller
  • 3. 从Maven工程创建Spring Boot工程
  • 4. 配置文件基本使用
    • 4.1 properties配置文件
    • 4.2 yml配置文件(实际开发中使用)
    • 4.3 yml配置信息的书写和获取
      • 4.3.1 第三方技术配置信息(只需要书写,不需要获取)
      • 4.3.2 自定义配置信息(某个变量的值写在配置文件里)
  • 5. Bean对象管理
    • 5.1 Bean对象扫描
    • 5.2 注册第三方技术的Bean对象
    • 5.3 注册条件
    • 5.4 自动配置原理


0. 关于本文

本文主要用于记录总结我学习Spring Boot过程遇到的重要知识,我学习的课程是B站黑马程序员的SpringBoot课程。希望此博客可以帮助到大家,也能方便我快速回看相关知识。

1. 概述

1.1 Spring简介

Spring是一个开源的Java平台,它提供了全面的基础设施支持来帮助Java开发者更容易地开发企业级应用程序。

1.2 Spring Boot简介

  • Spring Boot是Spring的一个子项目,是一个开源的Java基础框架,用于快速创建独立、生产级别的基于Spring框架的应用程序。
  • Spring Boot让开发者能够轻松创建Spring应用程序,而无需处理Spring框架配置的复杂性。

1.3 传统的开发方式

1.3.1 简述

使用多个子项目处理不同的场景业务,这些子项目以Spring Framework为核心。
在这里插入图片描述

1.3.2 缺点

  • 导入依赖繁琐。手动引入多个依赖,这些依赖的jar包之间还可能存在冲突
  • 项目配置繁琐。写很多个配置文件,以applicationContext.xml文件为核心,在里面声明多个bean对象(先声明再使用)

1.4 Spring Boot的优点

  • 起步依赖。本质上是一个Maven坐标,整合了完成一个功能需要的所有坐标,借助Maven传递依赖的特性。
  • 自动配置。在boot程序启动后,一些bean对象会自动注入到ioc容器,不需要手动声明,简化开发。
  • 其它特性
    • 内嵌Tomcat、Jetty(无需部署WAR文件)。启动Spring应用之后自动启动内部的Tomcat把Tomcat的内容部署好,部署项目的时候不再需要war包。
    • 外部化配置。修改配置的时候只需要修改外部的配置文件而不再需要重新打包jar包
    • 不需要XML配置(使用properties/yml文件进行配置)

2. 创建一个简单的Spring Boot应用程序

2.1 在IDEA创建项目

在这里插入图片描述
在这里插入图片描述

2.2 pom配置文件内容

  • 起步依赖
    在这里插入图片描述
  • 父工程
    在这里插入图片描述

2.3 启动类

在这里插入图片描述

  • @SpringBootApplication:这是一个Spring Boot框架的注解,用于标记主类作为Spring Boot应用程序的入口。

2.4 创建Controller

  • 创建一个controller软件包用于管理各种controller
    在这里插入图片描述
  • 新建一个HelloController类
    在这里插入图片描述
    • @RestController:这是一个Spring框架的注解,用于标记类作为REST风格的控制器。它告诉Spring框架,这个类中的方法会返回数据,而不是视图(如HTML页面)。
    • @RequestMapping:这是另一个Spring框架的注解,用于将HTTP请求映射到特定的处理方法上。在这个例子中,它告诉Spring框架,任何对/hello路径的HTTP请求都应该由hello方法来处理。

3. 从Maven工程创建Spring Boot工程

  • 创建一个基本的Maven工程
    在这里插入图片描述
  • 在pom.xml文件中添加父工程和启动依赖
    在这里插入图片描述
    在这里插入图片描述
  • 在App.java中提供启动类
    在这里插入图片描述
  • 在main文件夹下创建resources文件夹管理资源文件,并创建一个properties配置文件
    在这里插入图片描述

4. 配置文件基本使用

4.1 properties配置文件

在这里插入图片描述

  • 用“.”进行层级的分隔

4.2 yml配置文件(实际开发中使用)

在这里插入图片描述

  • 用换行和缩进进行层级的分隔
  • 层次更加清晰,更加关注数据

4.3 yml配置信息的书写和获取

4.3.1 第三方技术配置信息(只需要书写,不需要获取)

引入依赖之后根据需要的配置进行书写即可

4.3.2 自定义配置信息(某个变量的值写在配置文件里)

  • 配置书写
    • 普通配置变量
      在这里插入图片描述
      注意用空格分开键名和值,用换行和空格区分层级

    • 数组
      在这里插入图片描述
      用短横线和定义一个个的元素,用空格分开短横线

  • 配置获取
    • @value(“${…}”)
      在这里插入图片描述
      这样需要一个一个的指定

    • @ConfigurationProperties(prefix = “…”)
      在这里插入图片描述
      这样可以把一个层级下的所有配置信息指定到一个类的属性中,Spring Boot自动从相同的配置名获取值给变量

5. Bean对象管理

5.1 Bean对象扫描

  • Spring传统的方法
    • 在xml配置文件中添加标签指定扫描的包路径:<context:component-scan base-package=“com.xxx”>
    • 使用注解指定扫描的包路径:@ComponentScan(basePackages=“com.xxx”)
  • Spring Boot的方法
    • 默认扫描启动类所在包及其子包(可通过传统方法扫描其他包)

5.2 注册第三方技术的Bean对象

  • 使用@Bean注解。声明一个方法创建一个要注册的对象,对该方法使用@Bean注解
    在这里插入图片描述

    • 上述方法可以放在启动类里面(但是不推荐),也可以放在一个专门的配置类里面(推荐)
      在这里插入图片描述
    • 对象注册的名字默认是对应的方法名(如上图的student),可以通过注册的名字获取该对象,也可以在@Bean注解中指定名字,如@Bean(“teacher”)
  • 使用@Import注解。在启动类添加一个@Import(xxx.class)注解,xxx可以是任意类(普通类、配置类),实际开发多导入配置类和ImportSelector类

    • 导入配置类
      在这里插入图片描述
    • 导入ImportSelector(主要用于导入多个Bean类时使用)

5.3 注册条件

  • @ConditionalOnProperty。配置文件中存在对应的属性,才声明该bean。
    在这里插入图片描述
    前缀stu中有name和age等配置属性才注册,否则不注册。

  • @ConditionalOnMissingBean。当不存在当前类型的bean时,才声明该bean。
    在这里插入图片描述
    Student类没有被注册时才进行注册。

  • @ConditionalOnClass。当前环境存在指定的这个类时,才声明该bean。
    在这里插入图片描述

5.4 自动配置原理

  1. 启动类添加SpringBootApplication注解
  2. SpringBootApplication组合了EnableAutoConfiguration注解
  3. EnableAutoConfiguration组合了Import注解
  4. Import导入了AutoConfigurationImportSelector类
  5. AutoConfigurationImportSelector类通过层层调用读取.imports配置文件
  6. 读取到全类名之后解析注册条件,把满足条件的Bean对象自动注入到IOC容器
  • 创建能够自动配置的jar包
    在这里插入图片描述

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

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

相关文章

数据结构~二叉搜索树

文章目录 一、二叉搜索树的概念二、二叉搜索树的结构二叉搜索树的性能分析二叉搜索树的插入二叉搜索树的查找二叉搜索树的删除 三、二叉搜索树key和key/value使用场景四、二叉搜索树的练习将二叉搜索树就地转化为已排序的双向循环链表从前序与中序遍历序列构造二叉树二叉树的前…

jmeter-请求参数加密-MD5加密

方法1 &#xff1a;使用jmeter自带的函数助手digest Tool(工具)---Function Helper Dialog(函数助手对话框) 第一个参数是要md5加密的值&#xff0c;第二个参数是保存加密后值的变量 &#xff08; 此处变量是从txt文件导入的&#xff0c;所以使用的是${wd} &#xff09; …

excel统计分析(1):列联表分析与卡方检验

列联表&#xff1a;用于展示两个或多个分类变量之间频数关系的表格。——常用于描述性分析卡方检验&#xff1a;通过实际频数和期望频数&#xff08;零假设为真情况下的频数&#xff09;&#xff0c;反映了观察频数与期望频数之间的差异程度&#xff0c;来评估两个变量是否独立…

Metasploit渗透测试之服务端漏洞利用

简介 在之前的文章中&#xff0c;我们学习了目标的IP地址&#xff0c;端口&#xff0c;服务&#xff0c;操作系统等信息的收集。信息收集过程中最大的收获是服务器或系统的操作系统信息。这些信息对后续的渗透目标机器非常有用&#xff0c;因为我们可以快速查找系统上运行的服…

System Timer (STM)

文章目录 1. 介绍2. 功能特性3. 应用场景4. 功能介绍4.1 TIME0 ~TIME6计数器精度与定时范围4.2 比较器工作原理4.3 中断处理 5. Ifx Demo5.1 STM_Interrupt_1_KIT_TC277_TFT5.2 STM_System_Time_1_KIT_TC275_LK5.3 SMU_Reset_Alarm_1_KIT_TC275_LK 1. 介绍 Ifx TC37x拥有3个自…

前端大模型入门:使用Transformers.js实现纯网页版RAG(一)

我将使用两篇文章的篇幅&#xff0c;教大家如何实现一个在网页中运行的RAG系统。本文将其前一半功能&#xff1a;深度搜索。 通过这篇文章&#xff0c;你可以了解如何在网页中利用模型实现文本相似度计算、问答匹配功能&#xff0c;所有的推理都在浏览器端本地执行&#xff0c;…

C语言-IO

一,阻塞IO与非阻塞IO 简介: IO的本质是基于操作系统接口来控制底层的硬件之间数据传输&#xff0c;并且在操作系统中实现了多种不同的 IO 方式&#xff08;模型&#xff09;&#xff0c;比较常见的有下列三种 阻塞型IO模型 非阻塞型IO模型 多路复用IO模型 在 C 语言中&#…

牛客SQL练习详解 02:条件查询

牛客SQL练习详解 02&#xff1a;条件查询 1、基础排序sql36 查找后排序sql37 查找后多列排序sql38 查找后降序排列 2、基础操作符sql6 查找学校时北大的学生信息sql7 查找年龄大于24岁的用户信息sql8 查找某个年龄段的用户信息sql9 查找chuchu 3、高级操作符sql11 高级操作符练…

认知杂谈91《菜鸟的自我修炼:减少过度干预》

内容摘要&#xff1a;          在投资和生活中&#xff0c;动作过多往往因情绪波动和缺乏计划而引发亏损。历史上的安史之乱和现代投资中的频繁交易都是例证。要管理情绪&#xff0c;首先要认识自己的情绪模式&#xff0c;然后改变消极的思考方式&#xff0c;并通过合…

『USB3.0Cypress』QT基于cyusb_linux_1.0.5开发上位机

文章目录 1.CyUSB Suite2.搭建开发环境3.Cyusb的应用4.疑问解决5.传送门1.CyUSB Suite CyUSB Suite for Linux是一个围绕现有开源用户空间USB库libusb的wrapper。CyUSB套件通过围绕libusb的简化包装器以及在下载固件后提供用于测试外围设备的基础设施,让您快速入门。换句话说…

1.6 物理层

欢迎大家订阅【计算机网络】学习专栏&#xff0c;开启你的计算机网络学习之旅&#xff01; 文章目录 前言1 物理层的基本概念1.1 定义1.2 作用1.3 物理层的主要任务 2 数据通信的基础知识2.1 常用术语2.2 信号2.3 码元2.4 信道2.5 数据通信系统模型 3 信道的极限容量3.1 基本术…

LabVIEW提高开发效率技巧----合理管理程序架构

在LabVIEW开发中&#xff0c;合理管理程序架构是保持项目可维护性和扩展性的关键。随着项目复杂度的增加&#xff0c;良好的架构设计可以避免代码混乱&#xff0c;并且便于后期的修改和扩展。以下是两种常见且有效的架构管理方式&#xff1a; 1. 面向对象编程&#xff08;OOP&a…

Sony IMX334LQR-C 1/1.8寸 8.42 M像素

索尼IMX334LQR宽动态超星光级交通监测CMOS 封装&#xff1a;LGA 对⾓线&#xff1a;8.86 mm&#xff08;类型1/1.8&#xff09; 索尼IMX334LQR宽动态超星光级交通监测CMOS的参数及规格书资料&#xff1a; IMX334LQR-C是⼀个对⾓线8.86 mm&#xff08;类型1/1.8&#xff09;的…

安科瑞Acrel-1000DP分布式光伏监控系统在鄂尔多斯市鄂托克旗巴音乌苏六保煤矿5MW分布式光伏项目中的应用

安科瑞 华楠 摘 要&#xff1a;分布式光伏发电就是将太阳能光伏板分散布置在各个区域&#xff0c;通过小规模、模块化的方式实现电能的并网或独立使用&#xff0c;这种发电方式具有就近发电、就近并网、就近转换、就近使用的特点。近年来&#xff0c;技术进步和政策支持推动了光…

8086介绍

内部结构 执行部件EU&#xff08;Execution Unit&#xff09; 包含运算器、通用寄存器组、EU控制单元。 只负责控制&#xff0c;不和外部总线打交道 总线接口部件BIU&#xff08;Bus Interface Unit&#xff09; 包含指令队列缓冲器、16位指令指针寄存器IP、16位段寄存器&am…

TypeScript入门 (五)异步编程与前后端交互

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年9月学习赛的TypeScript学习总结文档。本文旨在全面介绍 TypeScript 中的异步编程与网络请求&#xff0c;帮助读者深入理解 TypeScript 中的 asyn…

Colorful/七彩虹将星X17 XS 22 Win11原厂OEM系统 带COLORFUL一键还原

安装完毕自带原厂驱动和预装软件以及一键恢复功能&#xff0c;自动重建COLORFUL RECOVERY功能&#xff0c;恢复到新机开箱状态。 【格式】&#xff1a;iso 【系统类型】&#xff1a;Windows11 原厂系统下载网址&#xff1a;http://www.bioxt.cn 注意&#xff1a;安装系统会…

Redis 五大基本数据类型及其应用场景进阶(缓存预热、雪崩 、穿透 、击穿)

Redis 数据类型及其应用场景 Redis 是什么? Redis是一个使用C语言编写的高性能的基于内存的非关系型数据库&#xff0c;基于Key/Value结构存储数据&#xff0c;通常用来 缓解高并发场景下对某一资源的频繁请求 &#xff0c;减轻数据库的压力。它支持多种数据类型,如字符串、…

Linux安装JDK及配置环境变量超详细教程

微服务Linux解析部署使用全流程 linux系统的常用命令 Linux安装vim超详细教程 Linux安装tomcat及配置环境变量超详细教程 1、上传压缩包 统一创建目录&#xff1a;/usr/local/jdk&#xff0c;将压缩包上传到这个目录下。拖动文件到这个目录下即可。 2、执行解压命令 先进…

ELMO理论

目录 1 优点 2 缺点 3.知识点个人笔记 2018年3月份&#xff0c;ELMo出世&#xff0c;该paper是NAACL18 Best Paper。在之前2013年的word2vec及2014年的GloVe的工作中&#xff0c;每个词对应一个vector&#xff0c;对于多义词无能为力。ELMo的工作对于此&#xff0c;提出了一…