【Java框架】SpringBoot(一)基本入门

news2024/11/15 12:04:33

目录

  • SpringBoot介绍
    • Spring Boot的诞生
    • SpringBoot特点
    • Spring和Spring Boot的关系
    • Spring Boot的优点和缺点
      • Spring Boot优点
      • Spring Boot缺点
    • 快速创建Spring Boot项目
  • IDEA创建SpringBoot工程
    • 1.打开IDEA,选择Spring Initlializr
    • 2.选择SpringBoot版本和初始化依赖
    • 3.更改boot版本和JDK版本
    • 4.启动
  • Spring Boot项目的结构解析
    • pom.xml文件中的父级依赖
    • 开箱即用的起步依赖 spring-boot-starter-xx
    • Spring Boot项目的入口类
      • SpringBoot的核心注解:@SpringBootApplication
  • Spring Boot项目的配置文件
    • yml格式的配置文件
      • 语法规则
      • 案例:修改启动端口
    • Spring Boot 项目的启动Banner
  • Spring Boot中简化编码
    • 代码示例
    • 思考

SpringBoot介绍

  • 官网:https://spring.io/projects/spring-boot
  • Spring Boot(英⽂中是“引导”的意思),是⽤来简化Spring应⽤的搭建到开发的过程
    • Spring Boot 可以轻松创建可以“直接运行”的独立的、生产级的基于 Spring 的应用程序
    • Spring Boot 只要很少的Spring配置就可以完成第三方组件的整合
    • 因为“习惯优先于配置”的原则,使得Spring Boot在快速开发应⽤和微服务架构实践中得到⼴泛应⽤。
    • 装好JDK环境和 Maven⼯具就可以使用Spring Boot了

Spring Boot的诞生

  • 这一要求促使了 2013 年初,开始启动Spring Boot 项目的研发。
  • Spring Boot的设计初衷是解决Spring各个版本配置工作过于繁重的问题,简化搭建流程、降低开发难度,使开发人员只需要专注应用程序的功能和业务逻辑的实现,而不用再配置上花费太多的时间。
  • Spring Boot使用“习惯优先于配置”的理念,提供了很多已经集成好的方案,以便于程序员在开发程序时能做到零配置或极简配置。
  • Spring Boot 并不是用来替代 Spring 的解决方案,而是和Spring 框架紧密结合用于提升 Spring 开发者体验的工具。

SpringBoot特点

  1. 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
  2. 内嵌Tomcat或Jetty等Servlet容器;
  3. 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
  4. 尽可能自动配置Spring容器;
  5. 提供准备好的特性,如指标、健康检查和外部化配置;
  6. 绝对没有代码生成,不需要XML配置。

Spring和Spring Boot的关系

  • Spring框架为开发Java应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开箱即用的模块,如:Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、Spring Test等这些模块缩短应用程序的开发时间,提高了应用开发的效率。
  • Spring Boot是Spring框架的扩展和自动化,它消除了设置Spring应用程序所需的XML配置,使得开发变得更快、更高效、更自动化。
  • Spring Boot 不是Spring 的替代者。Spring Boot 其实是依赖 Spring 框架来管理对象的依赖。Spring Boot 并不是Spring 的精简版本,而是为使用 Spring做好各种企业级项目开发的准备。

Spring Boot的优点和缺点

Spring Boot优点

  • 快速构建项目,开箱即用,提供各种默认配置来简化项目配置
  • 直接嵌入Tomcat、Jetty或Undertow等内嵌式容器简化Web项目,可独立运行
  • 没有冗余代码生成和XML配置的要求
  • 对主流开发框架的无缝集成
  • 提供运行时的应用监控
  • 极大地提高了开发、部署效率

Spring Boot缺点

  • 版本迭代速度很快,需要关注版本的变化
  • 配置简化,排错要求高
  • 入门容易,深入原理难

快速创建Spring Boot项目

其实 Spring Boot 工程本质上就是一个 Maven 工程

  • 在线方式(Spring Initializr):https://start.spring.io

  • Maven工程
    在这里插入图片描述

  • IDEA工具方式
    在这里插入图片描述

IDEA创建SpringBoot工程

1.打开IDEA,选择Spring Initlializr

在这里插入图片描述

2.选择SpringBoot版本和初始化依赖

在这里插入图片描述

3.更改boot版本和JDK版本

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

4.启动

直接启动package中默认的MybootApplication中的main即可
启动LOGO
在这里插入图片描述在这里插入图片描述

Spring Boot项目的结构解析

pom.xml文件中的父级依赖

  • Spring Boot父级依赖: 这个标签是在配置 Spring Boot 的父级依赖,有了这个,当前的项目才是 Spring Boot 项目,spring-boot-starter-parent 是一个特殊的 starter ,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖就可以省去 version 标签
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

开箱即用的起步依赖 spring-boot-starter-xx

  • 为什么引入 spring-boot-starter-web 就能使用 Spring MVC 的功能呢?
    在这里插入图片描述在这里插入图片描述
  • 看到这应该明白了吧, spring-boot-starter-web 这个 starter 中其实内部引入了 Spring 、 SpringMVC 、 Tomcat 的相关依赖,当然能够直接使用Spring MVC相关的功能了。

Spring Boot项目的入口类

  • 项目创建成功以后,会创建启动类,类的命名:项目名+Application。MybootApplication是一个很关键的启动类,程序的入口就是这里@SpringBootApplication是Spring Boot项目的核心注解,主要目的是开启自动配置

SpringBoot的核心注解:@SpringBootApplication

启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下3 个注解:

  • @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
  • @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
  • @ComponentScan:Spring组件扫描

Spring Boot项目的配置文件

  • Spring Boot 支持两种配置文件形式
    • .properties
    • .yml(推荐使用)
  • Spring Boot 使用一个全局的配置文件 application.properties 或 application.yml,放置在【src/main/resources】目录下
  • Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改
  • 创建Spring Boot 工程时,默认 resources 目录下就有 application.properties 文件

yml格式的配置文件

  • YAML的配置方式,都采用阶梯化缩进的方式展现,其结构显得更为清晰易读

语法规则

  • 大小写敏感
  • 数据值前必须有空格,作为分隔符
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格。
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • “#”表示注释

案例:修改启动端口

在这里插入图片描述

Spring Boot 项目的启动Banner

若要修改启动LOGO,在src/main/resources目录下新建banner.txt文件,然后将自己的图案黏贴进去即可,比如:

 
//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//            佛祖保佑       永不宕机      永无BUG                //
                               _(\_/) 
                             ,((((^`\
                             ((((  (6 \ 
                          ,((((( ,    \
       ,,,_              ,(((((  /"._  ,`,
      ((((\\ ,...       ,((((   /    `-.-'
      )))  ;'    `"'"'""((((   (      
    (((  /            (((      \
      )) |                      |
     ((  |        .       '     |
     ))  \     _ '      `t   ,.')
     (   |   y;- -,-""'"-.\   \/  
    )   / ./  ) /         `\  \
        |./   ( (           / /'
        ||     \\          //'|
        ||      \\       _//'||
        ||       ))     |_/  ||
        \_\     |_/          ||
        `'"                  \_\
                             `'"

Spring Boot中简化编码

代码示例

  1. 需求:新建"HelloController"控制器,定义方法index,输出”Hello,String Boot”。
  2. 添加包名com.zjl.controller,添加新的类HelloController
  3. 注意事项:处理请求的控制器必须和程序入口类在同一级别的包中(例如:在com包),否则无法使用
package com.zjl.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author: zjl
 * @datetime: 2024/4/22
 * @desc:
 */
@RestController
public class HelloController {
    @RequestMapping("/index")
    public Object index(){
        return "Hello,String Boot";
    }
}

思考

不仅仅是@Controller的类,还有@Service的类、@Mapper的接口、@Component的类等这类注解,为什么要放在启动类所在的包下呢?
在这里插入图片描述- 启动类头上,核心注解@SpringbootApplication这个注解是由三个注解组成的,点开一开:注意 @ComponentScan 这个注解

  • @ComponentScan 这个注解的作用是告诉spring,哪里可以找到bean, 如果在启动类没有配置这个注解,则默认扫描启动类所在的包的同级目录和它的子包,也可以配置具体路径扫描。 基于这个作用所以不能把启动类放在Java文件下,首先Java文件不是一个包,其次它是一个资源文件。故只要一启动就会报错!!!
  • 做过web开发的同学一定都有用过@Controller,@Service,@Repository注解,查看其源码你会发现,他们中有一个共同的注解@Component,没错@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中
  • 同时,它还可以扫描到所有的配置类,将配置类中的配置扫描到容器中!

所以,放在“指定位置”上,是一种规定!!!

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

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

相关文章

病理验证mIF和TMA路线(自学)

目录 技术 使用配对病理切片 mIF验证 单基因使用TMA验证 技术 多重荧光免疫组化技术 (Multiplex immunohistochemical&#xff0c;mIHC) 也称作酪氨酸信号放大 (Tyramide dignal amplification&#xff0c;TSA) 技术&#xff0c;是一类利用辣根过氧化酶 (Horseradish Pero…

(一)Java EE企业级应用开发实战之Servlet教程——JDK安装

首先打开清华大学开源软件镜像站&#xff0c;清华大学开源镜像网站地址为&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/ 打开该地址后的界面显示如下图所示 找到8版本对应的SDK安装包&#xff0c;我现在用的开发机器是Windows&#xff0c;所以我找的是Windows对应的版本…

Spring AOP (一)

本篇主要介绍Spring AOP的基础概念和入门使用 一、AOP的基本概念 AOP是一种面向切面编程的思想&#xff0c;它与IOC并称为Spring 的两大核心思想。什么是面向切面编程呢&#xff0c;具体来说就是对一类事情进行集中统一处理。这听起来像不像前面篇章中所介绍的统一功能处理&am…

Vue2 移动端(H5)项目封装弹窗组件

前言 因vant-ui的dialog组件没有自定义footer插槽 效果 参数配置 1、代码示例&#xff1a; <t-dialog :visible.sync"show" :title"title" submit"submit"></t-dialog>2、配置参数&#xff08;t-dialog Attributes&#xff09; 参…

JAVA基础之垃圾收集器

一 JVM垃圾收集 分代收集思想 当前虚拟机的垃圾收集一般采用分代收集算法&#xff0c;这种算法本身没有创新性&#xff0c;只是根据对象存活周期的不同将内存分为几块。一般将java堆内存分为新生代和老年代&#xff0c;这样我们就可以根据不同年龄到的特点选择不同的垃圾收集…

自动驾驶控制算法

本文内容来源是B站——忠厚老实的老王&#xff0c;侵删。 三个坐标系和一些有关的物理量 使用 frenet坐标系可以实现将车辆纵向控制和横向控制解耦&#xff0c;将其分开控制。使用右手系来进行学习。 一些有关物理量的基本概念&#xff1a; 运动学方程 建立微分方程 主要是弄…

Agent 智能体食用指南

Agent 智能体食用指南 三年前都在 ALL in AI&#xff0c;一年前都在 ALL in LLM&#xff0c;现在都在 ALL in AgentAutoGEN分析MetaGPT 分析RAG 分析MOE 多专家分析 三年前都在 ALL in AI&#xff0c;一年前都在 ALL in LLM&#xff0c;现在都在 ALL in Agent 科技圈焦点&…

智己汽车数据驱动中心PMO高级经理张晶女士受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 智己汽车科技有限公司数据驱动中心PMO高级经理张晶女士受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“规模化敏捷落地实践”。大会将于5月25-26日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 2…

Spring Bean依赖注入-Spring入门(二)

1、SpringBean概述 在Spring中&#xff0c;一切Java对象都被视为Bean&#xff0c;用于实现某个具体功能。 Bean的依赖关系注入的过程&#xff0c;也称为Bean的装配过程。 Bean的装配方式有3种&#xff1a; XML配置文件注解Java类 Spring中常用的两种装配方式分别是基于XML的…

秋招之路 面经

这里参考一位很厉害的前辈所分享的他的嵌入式软件工程师秋招之路&#xff0c;自己详细的读了一下他的经历以及他的分享的秋招面试和项目经验的总结。 我的嵌入式软件工程师秋招之路&#xff08;文末送福利&#xff09;_嵌入式软件工程师 刷leetcode-CSDN博客 如何在面试中介绍…

UA时间控件,选择时分的控件

方式一&#xff1a; <sit-property sit-widget"sit-time-picker"sit-value"vm.StartTime"sit-format"HH:mm"sit-validation"{required: true}"sit-read-only"false">开始时间:</sit-property> 方式二&#xff…

go-cqhttp 机器人使用教程

API | go-cqhttp 帮助中心 参考 | go-cqhttp 帮助中心 机器人下载 发送消息 http://127.0.0.1:5700/send_msg?message_typeprivate&user_id911412667&message你好呀 检查端口是否打开 netstat -ano | findstr :5701 发送的请求 软件的dopost的解析 Overridepro…

【MySQL】Linux环境下MySQL基本操作

目录 一、登录进入MySQL 二、MySQL数据库的查看、创建、删除、重命名、拷贝操作 三、数据库下表的创建、删除、查看、修改&#xff08;增加、删除、更新字段/列&#xff0c;修改字段/列名&#xff09; 四、表中数据的插入、删除、查找、更新 一、登录进入MySQL mysql -u u…

【小浩算法cpp题解】判断环形链表

目录 前言我的思路思路一 &#xff08;哈希表记录链表的访问&#xff09;&#xff1a;思路二 &#xff08;双指针&#xff0c;快指针在前&#xff0c;慢指针在后&#xff09;&#xff1a; 我的代码运行结果 前言 前几天我写的代码&#xff0c;都是把所有的内容写在main函数里&…

国产生骨肉冻干品控好不好?热榜TOP5生骨肉冻干分享

对于新手养猫人来说&#xff0c;进口生骨肉冻干的高价常常让人疑惑&#xff0c;为何它能在养猫达人中赢得如此高的声誉&#xff1f;与国产生骨肉冻干相比&#xff0c;进口产品的价格高出数倍&#xff0c;那么这高昂的价格是否代表了其独特的价值&#xff0c;还是只是一个消费陷…

Ghost Buster Pro for Mac:强大的系统优化工具

Ghost Buster Pro for Mac是一款功能强大的系统优化工具&#xff0c;专为Mac用户设计&#xff0c;旨在提供全方位的系统清理、优化和维护服务。 Ghost Buster Pro for Mac v3.2.5激活版下载 这款软件拥有出色的垃圾清理能力&#xff0c;能够深度扫描并清除Mac上的无效目录、文件…

小白看完这篇文章也能踏进网安大门,成为网络安全工程师

前言 在当前的互联网环境下&#xff0c;不少人感受到了职场的寒冬与996工作制的压力。然而&#xff0c;无论环境如何变化&#xff0c;掌握实用的技术始终是保障职业稳定和发展的关键。特别是在网络安全这一领域&#xff0c;技术人才需求量大且持续增长。今天&#xff0c;我们将…

出海企业必备:Zoho Desk打造高效海外工单管理体系!

出海工单系统和常见的工单系统相比有什么不同呢&#xff1f;工单系统主要事帮助售前或者售后人员记录、处理、跟踪客户需求&#xff0c;不仅有利于企业内部管理的规范化&#xff0c;还能够有效提高客户服务质量。 工单系统可以帮助出海企业搭建统一的订单管理、售后服务、甚至…

微电子领域常见概念(六)化学键合

微电子领域常见概念&#xff08;六&#xff09;化学键合 化学键合是化学中一个非常基础且重要的概念&#xff0c;它描述了原子之间通过电子的相互作用形成的连接。可以进行以下分类&#xff1a; 1. 离子键合&#xff08;Ionic Bonding&#xff09; • 定义&#xff1a;离子键合…

(CVPR,2023)SAN:用于开放词汇语义分割的边缘适配网络

文章目录 相关论文相关资料摘要引言方法对视觉 token 的特征融合使用注意力偏差进行掩码识别分割图像生成 实验 相关论文 &#xff08;CVPR&#xff0c;2024&#xff09;SED&#xff1a;一个用于开放词汇语义分割的简单编解码器 &#xff08;CVPR&#xff0c;2024&#xff09;…