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

文章目录

  • [0. 关于本文](#0. 关于本文)
  • [1. 概述](#1. 概述)
    • [1.1 Spring简介](#1.1 Spring简介)
    • [1.2 Spring Boot简介](#1.2 Spring Boot简介)
    • [1.3 传统的开发方式](#1.3 传统的开发方式)
      • [1.3.1 简述](#1.3.1 简述)
      • [1.3.2 缺点](#1.3.2 缺点)
    • [1.4 Spring Boot的优点](#1.4 Spring Boot的优点)
  • [2. 创建一个简单的Spring Boot应用程序](#2. 创建一个简单的Spring Boot应用程序)
    • [2.1 在IDEA创建项目](#2.1 在IDEA创建项目)
    • [2.2 pom配置文件内容](#2.2 pom配置文件内容)
    • [2.3 启动类](#2.3 启动类)
    • [2.4 创建Controller](#2.4 创建Controller)
  • [3. 从Maven工程创建Spring Boot工程](#3. 从Maven工程创建Spring Boot工程)
  • [4. 配置文件基本使用](#4. 配置文件基本使用)
    • [4.1 properties配置文件](#4.1 properties配置文件)
    • [4.2 yml配置文件(实际开发中使用)](#4.2 yml配置文件(实际开发中使用))
    • [4.3 yml配置信息的书写和获取](#4.3 yml配置信息的书写和获取)
      • [4.3.1 第三方技术配置信息(只需要书写,不需要获取)](#4.3.1 第三方技术配置信息(只需要书写,不需要获取))
      • [4.3.2 自定义配置信息(某个变量的值写在配置文件里)](#4.3.2 自定义配置信息(某个变量的值写在配置文件里))
  • [5. Bean对象管理](#5. Bean对象管理)
    • [5.1 Bean对象扫描](#5.1 Bean对象扫描)
    • [5.2 注册第三方技术的Bean对象](#5.2 注册第三方技术的Bean对象)
    • [5.3 注册条件](#5.3 注册条件)
    • [5.4 自动配置原理](#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包
相关推荐
张国荣家的弟弟7 分钟前
【Yonghong 企业日常问题 06】上传的文件不在白名单,修改allow.jar.digest属性添加允许上传的文件SH256值?
java·jar·bi
ZSYP-S18 分钟前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
yuanbenshidiaos25 分钟前
C++----------函数的调用机制
java·c++·算法
是小崔啊43 分钟前
开源轮子 - EasyExcel01(核心api)
java·开发语言·开源·excel·阿里巴巴
黄公子学安全1 小时前
Java的基础概念(一)
java·开发语言·python
liwulin05061 小时前
【JAVA】Tesseract-OCR截图屏幕指定区域识别0.4.2
java·开发语言·ocr
jackiendsc1 小时前
Java的垃圾回收机制介绍、工作原理、算法及分析调优
java·开发语言·算法
Yuan_o_1 小时前
Linux 基本使用和程序部署
java·linux·运维·服务器·数据库·后端
Oneforlove_twoforjob1 小时前
【Java基础面试题027】Java的StringBuilder是怎么实现的?
java·开发语言
数据小小爬虫2 小时前
利用Java爬虫获取苏宁易购商品详情
java·开发语言·爬虫