Spring Boot介绍--快速入门--约定优于配置

文章目录

  • SpringBoot 基本介绍
    • 官方文档
    • Spring Boot 是什么?
    • SpringBoot 快速入门
      • 需求/图解说明
      • 完成步骤
      • 快速入门小结
    • Spring SpringMVC SpringBoot 的关系
      • 总结
        • 梳理关系
        • 如何理解-约定优于配置

SpringBoot 基本介绍

官方文档

官网: https://spring.io/projects/spring-boot
学习文档: https://docs.spring.io/spring-boot/docs/current/reference/html/
离线文档: spring-boot-reference.pdf
在线API: https://docs.spring.io/spring-boot/docs/current/api/

Spring Boot 是什么?

第一句话: Spring Boot 可以轻松创建独立的、生产级的基于Spring 的应用程序
第二句话: Spring Boot 直接嵌入Tomcat、Jetty 或Undertow ,可以"直接运行" Spring Boot 应用程序

SpringBoot 快速入门

需求/图解说明

构建一个SpringBoot 项目,浏览器发送/hello 请求[http://localhost:8080/hello],响应 Hello,SpringBoot

image-20230802165134884

image-20230802164317683

完成步骤

  1. 确认开发环境是jdk 8 或以上,maven 在3.5+

image-20230802164425378

image-20230802164457850

  1. 创建maven 项目

image-20230802164724370

image-20230802165009984

image-20230802165257569

  1. 在quickstart\pom.xml 引入SpringBoot 父工程和web 项目场景启动器

    导入之后要记得刷新maven,可以点开maven查看他导入的相关依赖有哪些

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.nlc</groupId><artifactId>quickstart</artifactId><version>1.0-SNAPSHOT</version><!--导入springboot父工程-规定写法--><parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.5.3</version></parent><!--导入web项目场景启动器: 会自动导入和web开发相关的所有依赖[库/jar]后面还会说spring-boot-starter-web 到底引入哪些相关依赖--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>
  1. 创建quickstart\src\main\java\com\nlc\springboot\MainApp.javaSpringBoot 应用主程序
// @SpringBootApplication 表示这是一个springboot 应用
@SpringBootApplication
public class MainApp {public static void main(String[] args) {//启动SpringBoot 应用程序SpringApplication.run(MainApp.class, args);}
}
  1. 创建quickstart\src\main\java\com\nlc\springboot\controller\HelloController.java 控制器
@Controller
public class HiController {//返回hi,springboot@RequestMapping("/hi")@ResponseBodypublic String hi() {System.out.println("website-" + website);return "hi~, SpringBoot";}
}
  1. 运行MainApp.java 完成测试, 浏览器http://localhost:8080/hi

快速入门小结

  1. SpringBoot 比较传统的SSM 开发, 简化整合步骤, 提高开发效率。
  2. 简化了Maven 项目的pom.xml 依赖导入, 可以说是一键导入, 如图.

image-20230802170639585

  1. 引入一个spring-boot-starter-web, 到底做了什么?SpringBoot依靠maven依赖的传递性把jar包引入。查看类图

image-20230802171101480

  1. 内置Tomcat , 把Tomcat 当作一个主键直接引入,简化服务器的配置
  2. 当然SpringBoot 还有很多优势,后面会逐步深入讲解

Spring SpringMVC SpringBoot 的关系

总结

梳理关系

  1. 他们的关系大概是: Spring Boot > Spring > Spring MVC
  2. Spring MVC 只是Spring 处理WEB 层请求的一个模块/组件, Spring MVC 的基石是Servlet
  3. Spring 的核心是IOC 和AOP, IOC 提供了依赖注入的容器, AOP 解决了面向切面编程
  4. Spring Boot 是为了简化开发, 推出的封神框架(约定优于配置[COC],简化了Spring 项目的配置流程), SpringBoot 包含很多组件/框架,Spring 就是最核心的内容之一,也包含Spring MVC
  5. Spring 家族,有众多衍生框架和组件例如boot、security、jpa 等, 他们的基础都是Spring

如何理解-约定优于配置

1、约定优于配置(Convention over Configuration/COC),又称按约定编程,是一种软件设计规范, 本质上是对系统、类库或框架中一些东西假定一个大众化合理的默认值(缺省值)。
2、例如在模型中存在一个名为User 的类,那么对应到数据库会存在一个名为user 的表,只有在偏离这个约定时才需要做相关的配置(例如你想将表名命名为t_user 等非user 时才需要写关于这个名字的配置)
3、简单来说就是假如你所期待的配置与约定的配置一致,那么就可以不做任何配置,约定不符合期待时, 才需要对约定进行替换配置
4、约定优于配置理念【解读:为什么要搞一个约定优于配置】
约定其实就是一种规范,遵循了规范,那么就存在通用性,存在通用性,那么事情就会变得相对简单,程序员之间的沟通成本会降低,工作效率会提升,合作也会变得更加简单。

生活中,这样的情况,大量存在…就比如周一到周五上班,周末休息,不用周六特意打电话给上级请假,因为理论上这是一个约定俗成的事情,周六周日就是休息时间。

5、约定优于配置不是说约定的优先级高,意思是如果你没有配置,就以约定的为准;配置了,就按照配置的来 。Convention over Configuration只是翻译过来是约定优于配置,它是从规范性、通用性以及提升工作效率这方面来理解的。

6、可以这么理解,如果大家遵守了约定,开发效率就会提升。如果自己需要配置就直接配置,以配置的为准。

Configuration只是翻译过来是约定优于配置,它是从规范性、通用性以及提升工作效率这方面来理解的。

6、可以这么理解,如果大家遵守了约定,开发效率就会提升。如果自己需要配置就直接配置,以配置的为准。

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

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

相关文章

linux 复习

vim 使用 一般模式 、 命令模式、编辑模式 esc 进入一般模式 i 进入编辑模式 shift: 进入命令模式 yy p 复制粘贴 5yy 复制当前开始的5行 dd 删除 5dd 删除当前开始的5行 u撤销操作 ctrlr 恢复 shiftg 滚动最底部 gg 滚动最顶 输入数字 然后shiftg 跳转到指定行 用户操作…

GitLab不同角色对应的权限

Owner&#xff08;拥有者&#xff09;&#xff1a; 拥有者是项目或组的创建者&#xff0c;拥有最高级别的权限。他们可以添加、删除项目成员&#xff0c;修改项目设置&#xff0c;管理访问权限&#xff0c;并进行项目转让。在组级别&#xff0c;他们还可以添加或删除子组和项目…

java策略模式三种实现方案

方案1&#xff1a;Autowired Map public interface ClientService {void hanlde(Object obj);String type(); }Service public class PcClientService implements ClientService { Overridepublic void handle(Object obj) {// todo pc客户端逻辑} Overridepublic Stri…

Leaflet入门,地图平移跳转到指定位置和飞行到指定位置效果

前言 本章讲解如何Leaflet如何实现操作地图平移到指定位置或者飞行到指定位置效果。 vue如何使用Leaflet vue2如何使用:《Leaflet入门,如何使用vue2-leaflet实现vue2双向绑定式的使用Leaflet地图,以及初始化后拿到leaflet对象,方便调用leaflet的api》 vue3如何使用:《L…

XXL-JOB定时任务框架(Oracle定制版)

特点 xxl-job是一个轻量级、易扩展的分布式任务调度平台&#xff0c;能够快速开发和简单学习。开放源代码并被多家公司线上产品使用&#xff0c;开箱即用。尽管其确实非常好用&#xff0c;但我在工作中使用的是Oracle数据库&#xff0c;因为xxl-job是针对MySQL设计的&#xff…

MySql的Windows安装指南

目录 一、MySQL的4大版本 二、软件的下载 三、MySQL8.0 版本的安装 四、配置MySQL8.0 五、配置MySQL8.0 环境变量 六、登录验证 一、MySQL的4大版本 MySQL Community Server 社区版本&#xff0c;开源免费&#xff0c;自由下载&#xff0c;但不提供官方技术支持&#xff…

一款界面精美的商城微信小程序源码 蔬菜生鲜商城小程序源码

一款界面精美的商城微信小程序源码 蔬菜生鲜商城小程序源码 界面非常漂亮的一款我厨蔬菜生鲜商城小程序源码&#xff0c;tab切换效果&#xff0c;分享给大家参考。

一、7.协同式任务切换与抢占式任务切换

使用TSS来在任务切换时保护现场和恢复现场 内核任务&#xff1a;单纯由内核组成的任务&#xff0c;和其他用户程序组成其他任务 内核任务的创建 ;为内核任务创建任务控制块TCB mov ecx, 0x46 call sys_routine_seg_sel:allocate_memory call append_to_tcb_link ;将此TCB添加…

BClinux8.6 制作openssh9.2p2 rpm升级包和升级实战

一、背景说明 BClinux8.6 安装的openssh 版本为9.3p1&#xff0c;经绿盟扫描&#xff0c;存在高危漏洞&#xff0c;需要升级到最新。 OpenSSH 命令注入漏洞(CVE-2020-15778) OpenSSH 安全漏洞(CVE-2023-38408) 目前官网只提供编译安装包&#xff0c;而BClinux8.6 为rpm方…

软考高项-项目立项管理

立项管理的内容包含哪些&#xff1f; 提交项目建议书项目可行性研究项目的招标和投标 立项流程分为两块 对于甲方的立项&#xff1a;需求调研->编写项目申请书->可行性研究&#xff08;机会、初步、详细&#xff09;->项目论证->项目评估->评审获得批准->发…

rust之String、str、‘static str 与 FastStr使用详解

关注我&#xff0c;学习Rust不迷路&#xff01;&#xff01; String: 创建一个空的 String &#xff1a; let empty_string String::new();从字符串字面量创建一个 String &#xff1a; let hello_string String::from("Hello");将一个字符串追加到现有的 Stri…

回归预测 | MATLAB实现基于SVM-RFE-BP支持向量机递归特征消除特征选择算法结合BP神经网络的多输入单输出回归预测

回归预测 | MATLAB实现基于SVM-RFE-BP支持向量机递归特征消除特征选择算法结合BP神经网络的多输入单输出回归预测 目录 回归预测 | MATLAB实现基于SVM-RFE-BP支持向量机递归特征消除特征选择算法结合BP神经网络的多输入单输出回归预测预测效果基本介绍研究内容程序设计参考资料…

力扣:53. 最大子数组和(Python3)

题目&#xff1a; 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff…

Vue中,$forceUpdate()的使用

在Vue官方文档中指出&#xff0c;$forceUpdate具有强制刷新的作用。 那在vue框架中&#xff0c;如果data中有一个变量:age&#xff0c;修改他&#xff0c;页面会自动更新。 但如果data中的变量为数组或对象&#xff0c;我们直接去给某个对象或数组添加属性&#xff0c;页面是识…

antv/l7地图,鼠标滚动,页面正常滑动-- 我们忽略的deltaY

背景 在官网项目中&#xff0c;需要使用一个地图&#xff0c;展示产品的分布区域及数量。希望的交互是&#xff0c;鼠标放上标点&#xff0c;tooltip展示地点和数量等信息。鼠标滚动&#xff0c;则页面随着滚动。但是鼠标事件是被地图代理了的&#xff0c;鼠标滚动意味着地图的…

性能测试入门知识总结

目录 1.什么是性能测试&#xff1f; 2.为什么要进行性能测试&#xff1f; 3.性能测试的常见术语 4.性能测试的分类 5.性能测试如何展开&#xff1f; 1.什么是性能测试&#xff1f; 性能测试是一种测试类型&#xff0c;旨在确定系统的性能以衡量性能&#xff0c;验证或验证…

8.15锁的优化

1.锁升级(锁膨胀) 无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁 偏向锁:不是真的加锁,而是做了一个标记,如果有别的线程来竞争才会真的加锁,如果没有别的线程竞争就不会加锁. 轻量级锁:一个线程占领锁资源后,另一个线程通过自旋的方式反复确认锁是否被是否(这个过程比较…

PostgreSQL表分区详解

表分区是一种非常有效的技术&#xff0c;用于提高大型数据库表的性能。通过将表的内容划分为较小的子表&#xff08;称为分区&#xff09;&#xff0c;可以减小表的整体大小&#xff0c;从而显着提高性能。 什么时候应该对表进行分区&#xff1f; 如果您的表对于服务器的 RAM…

RabbitMQ安装说明文档-v2.0

rabbitmq安装 说明&#xff1a;请使用资料里提供的CentOS-7-x86_64-DVD-1810.iso 安装虚拟机. 1. 安装依赖环境 在线安装依赖环境&#xff1a; yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel …

【并发专题】单例模式的线程安全(进阶理解篇)

目录 背景前置知识类加载运行全过程 单例模式的实现方式一、饿汉式基本介绍源码分析 二、懒汉式基本介绍源码分析改进 三、懒汉式单例终极解决方案&#xff08;静态内部类&#xff09;&#xff08;推荐使用方案&#xff09;基本介绍源码分析 感谢 背景 最近学习了JVM之后&…