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

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

文章目录

  • 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.kler.cn/a/324166.html

相关文章:

  • CentOS7.9 源码编译 FreeSWITCH 1.10.12
  • oneplus3t-Lineage16.1-Android.bp
  • 《Django 5 By Example》阅读笔记:p105-p164
  • 五、函数封装及调用、参数及返回值、作用域、匿名函数、立即执行函数
  • Python小试牛刀:第一次爬虫,获取国家编码名称
  • 探索IDE的无限可能:使用技巧与插件推荐
  • 【教学类-18-04】20240508《蒙德里安“黑白格子画” 七款图案挑选》
  • [大语言模型-论文精读] 词性对抗性攻击:文本到图像生成的实证研究
  • 基于VUE的在线手办交易平台购物网站前后端分离系统设计与实现
  • 在矩池云使用 Llama-3.2-11B-Vision 详细指南
  • vxe-table制作高亮刷新功能
  • C#源码安装ZedGraph组件,并且立即演示使用
  • 代码随想录训练营第46天|回文子序列
  • 高通Camx-内存池架构/ImageBuffer
  • Linux进程的学习(持续更新)
  • java后端传时间戳给前端的三种方式
  • 学习C语言(21)
  • videojs 播放mp4视频只有声音没有画面问题
  • k8s搭建一主三从的mysql8集群---无坑
  • 【深度学习】注意力机制与自注意力机制详解
  • Docker学习路线
  • 将 Java 对象自动转换为 XML 字符串
  • 电子数据交换EDI 835 的处理
  • Spring Boot 进阶- Spring Boot 自定义拦截器详解
  • 中药材识别
  • 前置机、跳板机、堡垒机:安全运维领域的“黄金三角”