SpringBoot项目创建及其核心设计思想

news2024/12/25 22:34:47

参考了很多相关博客:

springboot怎么学? - 知乎

如何解读springboot 中约定大于配置、JPA是什么、咋用_打豆豆。的博客-CSDN博客

SpringBoot约定大于配置到底是什么意思?_zhupanlinch的博客-CSDN博客

SpringBoot约定大于配置的特性解读 & SpringBoot快速入门_星河_赵梓宇的博客-CSDN博客

SpringBoot-基于spring的约定优于配置_木子松的猫的博客-CSDN博客

目录

Spring是什么? spring有什么缺点呢 ?

什么是SpringBoot 呢 ?

为什么要有SpringBoot 呢 ?

Spring Boot 有什么优点呢 ?

Spring Boot支持哪些内置的Servlet容器呢 ?

SpringBoot 与 Spring 的区别是什么呢 ?

创建SpringBoot项目

Spring项目创建失败解决办法

什么情况算是创建好一个Spring Boot的项目呢 ?

输出 Hello,Spring Boot

简单看一下Spring的项目目录

相关路径的问题

SpringBoot 的核心设计思想

那么SpringBoot中有哪些约定呢?


Spring是什么? spring有什么缺点呢 ?

Spring是一种重量级企业的开发框架,Spring框架是为了简化企业级Java开发的.再具体来说,Spring,Spring就是包含了众多方法的IOC容器.

虽然Spring的组件代码是轻量级的,但是它需要大量的XML进行配置,Spring注解数量越来越多,被大量使用,尤其是相同的多个注解会被大量重复的用到各个类或者方法中,这就会导致繁琐的配置及大量冗余代码

为了减少配置做了以下工作 :

在 Spring2.5引入了基于注解的组件扫描,消除大量针对应用程序自身组件显示XML配置,Spring3.0引入了基于java的配置,一种类型安全的可重构配置方式,可以替代XML

但是当我们使用Spring的时候,开启它的某些特性的时候,比如事务管理和SpringMVC,还是需要XML或者java进行显示配置,启用第三方库也要显式配置,如Thymeleaf和Web视图.配置Servlet和过滤器同样是需要web.xml和Servlet初始化代码进行显式配置,组件减少了配置量,java配置也减少很多,但是Spring还需要很多配置,

再比如还会有一些相关库的依赖,不同库的版本冲突.....

什么是SpringBoot 呢 ?

对于SpringBoot它是Spring的脚手架,用来简化Spring框架本身的繁琐配置,达到快速的集成和开发.最典型的减少配置,开箱即用.

为什么要有SpringBoot 呢 ?

SpringBoot它是Spring的脚手架,用来简化Spring开发的.最典型的减少配置,开箱即用.

Spring Boot 有什么优点呢 ?

快速集成框架,Spring Boot 提供了启动添加依赖的功能,⽤于秒级集成各种框架。
内置运⾏容器,⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序 (不需要向Spring,那样还要在Tomcat容器里面使用,Spring boot自身内置了Tomcat容器,不需要进行配置,可以直接运行和部署)
快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬

可以完全抛弃繁琐的 XML使⽤注解和配置的⽅式进⾏开发。
⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况

Spring Boot 提供了很多种插件,可以使用内置工具(Maven,Gradle)进行开发和测试Spring Boot应用程序

Spring Boot支持哪些内置的Servlet容器呢 ?

可以将 Spring 引导应用程序部署到任何 Servlet3.1 + 兼容的Web容器中

SpringBoot 与 Spring 的区别是什么呢 ?

spring和spring boot就是同一家公司的两种产品,spring是很早起的框架,有很大的社区,庞大的用户

更具体的来说,Spring就是包含了众多方法的IOC容器.而对于Spring Boot来说,Spring Boot就是Spring的一个脚手架,只是对Spring本身的扩展,用来简化Spring框架本身的繁琐配置,使得开发,测试和部署更加的方便

创建SpringBoot项目

首先先要下载好Spring boot Helper 这个插件,下载后重新新建一个Spring boot的项目

Spring项目创建失败解决办法

出现这种错误就是Maven的jar包没有下载完成.导致失败,所以这个时候,我们应该先要配置好国内源

有可能你会发现一点开这两个设置就会弹出一大堆Maven下载失败,这就是国内源的问题.

首先先要配置好国内源-->也就是settings.xml-->配置好国内的镜像.

  <!-- mirrors
   | This is a list of mirrors to be used in downloading artifacts from remote repositories.
   |
   | It works like this: a POM may declare a repository to use in resolving certain artifacts.
   | However, this repository may have problems with heavy traffic at times, so people have mirrored
   | it to several places.
   |
   | That repository definition will have a unique id, so we can create a mirror reference for that
   | repository, to be used as an alternate download site. The mirror site will be the preferred
   | server for that repository.
   |-->
  <mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
     <mirror>
        <id>******</id>
        <name>******</name>
        <url>******</url>
        <mirrorOf>******</mirrorOf>
    </mirror>
	
    <!-- 阿里云镜像 -->
    <mirror> 
    <id>alimaven</id> 
    <name>aliyun maven</name> 
    <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> 
    <mirrorOf>central</mirrorOf> 
    </mirror>

    <!-- junit镜像地址 -->
    <mirror> 
    <id>junit</id> 
    <name>junit Address/</name> 
    <url>http://jcenter.bintray.com/</url> 
    <mirrorOf>central</mirrorOf> 
    </mirror>
	
  </mirrors>

有可能你配置我的这个也可能不好使,那就去网上找找,就好了我发现多配置几个就会好使.

然后重新创建出项目-->同时也要保证网络是良好的... 然后进行下载,初次下载可能会很慢,慢慢来就行.

什么情况算是创建好一个Spring Boot的项目呢 ?

当然,我们也可以运行一下,看是否能够成功

输出 Hello,Spring Boot

这可能是我们学习一门新技术的时候,最熟悉的给新技术招手了,发誓一定要学好它哈哈哈....

package com.example.demo;

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

@RestController
public class TestController {
    @RequestMapping("/hello")//加上路由
    public String sayHello(){
        return "hello, Spring Boot";
    }
}

简单看一下Spring的项目目录

相关路径的问题

如果不放在同级目录下就会报错-->否则SpringBoot项目就不会将Bean注入到Spring容器中.

SpringBoot 的核心设计思想

如何理解Springboot的核心思想 -- > "约定大于配置" 呢 ?

我们可以用Spring与SpringBoot进行对比,以前我们基于Spring框架实现的Web应用都需要做一些与业务无关的并且只需要做一次的配置 比如 web.xml,管理jar包的依赖,将应用部署到Web容器中......

对于SpringBoot我们不需要在进行这些繁琐的配置,这些SpringBoot已经帮我们实现好了.我们只需要实现我们所实现的业务代码即可..这就是约定大于配置的思想..

使用这种约定大于配置的思想,在进行使用SpringBoot开发的时候,使用框架提供的默认值,但是如果提供的默认值与我们的需求不匹配的情况下,我们就可以进行自己进行配置比如 : properties或者yml来重写框架的默认值来满足我们的需求.

用自己的话来理解 : 就是别人已经帮我们把该做的事情做好了,我们只需要做自己的事情就行了,如果别人以前做的事情不符合我们的需求,我们修改一下或者添加一下自己需要的东西就好了呗,变成自己的就行了(哪有什么岁月静好,只不过是有人为你负重前行)

那么SpringBoot中有哪些约定呢?

  • Maven的目录结构。默认有resources文件夹,存放资源配置文件。src-main-resources,src-main-java。默认的编译生成的类都在target文件夹下面
  • spring boot默认的配置文件必须是,也只能是application.命名的yml文件或者properties文件,且唯一
  • application.yml中默认属性。数据库连接信息必须是以spring: datasource: 为前缀;多环境配置。该属性可以根据运行环境自动读取不同的配置文件;端口号、请求路径等
  • Spring Boot会自动内置Tomcat容器来运行 Web 应用,我们不需要再去单独做应用部署。
  • Spring Boot 通过扫描约定路径下的 Spring.factories文件来识别配置类,实现 Bean 的自动装配。
  • SpringBoot 约定,当你导入 spring-boot-starter-web 后,就约定了你是一个 web 开发环境。就约定了你会使用 SpringMVC。至于其它的也约定你会需要,都给你默认导入进来。当你觉得不合适的时候,可以用更少的改动,满足你的需要。
  • 当我们导入spring-boot-starter-web后,就会自动帮我们导入springMVC的相关依赖和一个内置的tomcat容器,以及spring-boot-starter-logging依赖。这使得在开发阶段可以直接通过 main 方法或是 JAR 包独立运行一个 WEB 项目。
  • SpringBoot 约定以 starter 的形式减少依赖,于是相继推出了不少常用的 starter。

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

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

相关文章

胶囊网络深入理解

胶囊网络的概念与理解 胶囊网络概述 人工神经元不应当追求神经元活动中的视角不变性&#xff0c;&#xff08;使用单一的标量输出来总结一个局部池中的重要特征的检测器的活动&#xff09;。而应当使用局部的胶囊&#xff0c;这些胶囊对其输入执行一些相当复杂的内部计算。然…

【Java】Java中时间的相关类(Date,SimpleDateFormat)

文章目录Date类SimpleDateFormat类Date类 Date是JDK提供的类&#xff0c;用来描述时间&#xff0c;使用无参构造创建的对象默认表示系统的当前时间&#xff0c;使用有参构造&#xff08;指定的毫秒值&#xff09;表示从时间原点&#xff08;1970年&#xff09;过了该参数值的时…

08_原始套接字

知识点1【原始套接字概述】 1、UDP封包格式 ​IP封包格式&#xff1a; Ethernet封包格式 TCP封包格式&#xff1a; ICMP封包格式&#xff1a;ping 知识点2【数据包的分析】 案例&#xff1a;网络分析器&#xff1a; 知识点2【混杂模式】接受数据&#xff08;了解&#x…

win11+WSL2安装visdom

win11WSL2安装visdom环境配置下载visdom小小的修改运行visdom环境配置 Win11WSL2Ubuntu-18.04 下载visdom pip install visdom pip install --upgrade visdom conda install -c conda-forge visdom 小小的修改 \home\grass\miniconda3\envs\torch\lib\python3.8\site-pack…

[一篇读懂]C语言九讲:线性表应用

[一篇读懂]C语言九讲&#xff1a;线性表应用1. 与408关联解析及本节内容介绍1 与408关联解析2 本节内容介绍2. 线性表的顺序表示原理解析1 线性表线性表的定义线性表的特点2 线性表的顺序表示顺序表的定义顺序表优缺点顺序表插入操作顺序表删除操作动态分配3. 顺序表的初始化及…

微服务系列之单体架构

随笔 终于迎来了“微服务、云原生”系列文章&#xff0c;这个系列的文章的更新速度博主无法保证能够每个星期一篇&#xff0c;因为这个系列的难度比以往系列都要高&#xff08;以往的系列就没有保证一个星期一更&#xff09;。但是长时间不去写文章&#xff0c;自己可能会慢慢…

Keepalived+LVS部署

目录 一、环境准备 二、实验拓扑 三、部署LVS DR环境 四、LVS服务器配置keepalived 1、安装keepalived 2、修改lvs1服务器keepalived配置 3、修改lvs2服务器keepalived配置 五、客户端测试 1、负责均衡测试 2、LVS服务器高可用测试 一、环境准备 准备4台centos服务器…

学习日记(单元测试、反射、注解、动态代理)

文章目录学习日记&#xff08;单元测试、反射、注解、动态代理&#xff09;一、单元测试1. 单元测试实践2. JUnit 常用注解二、反射1. 反射获取类对象2. 反射获取构造器对象3. 反射获取成员变量对象4. 反射获取成员方法对象三、反射的作用举例1. 绕过编译阶段为集合添加数据2. …

基于生物地理学的优化算法(BBO)用于训练多层感知器(MLP)【多种算法进行比较】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

java中的BigDecimal使用

文章目录1、什么是BigDecimal&#xff1f;2、为什么使用BigDecimal&#xff1f;3、如何使用BigDecimal&#xff1f;&#xff08;1&#xff09;BigDecimal初始化赋值&#xff08;2&#xff09;加减乘除运算&#xff08;3&#xff09;BigDecimal保留两位小数及舍入模式&#xff0…

WFP实现侧边栏导航菜单

菜单导航功能实现&#xff0c;常规的管理系统应该常用&#xff0c;左侧显示菜单条目&#xff0c;点击菜单&#xff0c;右侧切换不同的业务用户控件。 常用菜单可以采用TreeView树形控件特定样式实现 &#xff0c;本文介绍的是使用ExpanderListView的组合形式实现的导航菜单&am…

算法day24|理论基础77

详细布置 理论基础 什么是回溯法&#xff1a;递归函数下面通常有回溯法 它使用的地方&#xff1a;组合&#xff0c;切割&#xff0c;子集&#xff0c;排列&#xff0c;棋盘问题&#xff08;N皇后&#xff0c;解数独&#xff09; 回溯算法的模板: void backtracking(参数)&…

微型计算机基础

微型计算机常用术语 位&#xff08;bit&#xff09;&#xff1a;计算机所能表示的最基本&#xff0c;最小的数据单元。1个二进制位有两种状态0和1 通常情况下0表示低电平&#xff08;接地&#xff09;&#xff0c;1表示高电平接电源&#xff08;VCC&#xff09; 字节&#xff0…

MATLAB 矩阵处理及多项式计算

一、实验目的 &#xff08;1&#xff09;掌握生成特殊矩阵以及矩阵处理的方法 &#xff08;2&#xff09;掌握数据统计和分析的方法 &#xff08;3&#xff09;掌握多项式的常用计算 二、实验原理与实验设备 原理&#xff1a;计算机编程相关知识技能和MATLAB软件编译环境 …

c++——map和set的封装

注&#xff1a;该封装基于前面博客已实现红黑树&#xff0c;map和set封装并不难&#xff0c;主要还是对红黑树的理解 目录 一. 改造红黑树 1. 改变节点的定义&#xff0c;使用更高维度的泛型 2. 红黑树追加迭代器的实现 1. 红黑树迭代器的构造函数和基本框架 2. begin()和e…

2.4、编码与调制

2.4、编码与调制 在计算机网络中。计算机需要处理和传输用户的文字&#xff0c;图片&#xff0c;音频和视频。它们可以统称为消息。 数据是运送消息的实体。 计算机中的网卡将比特 000 和 111&#xff0c;变换成相应的电信号发送到网线。 也就是说&#xff0c;信号是数据的…

[附源码]java毕业设计网络学习平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

LeetCode力扣刷题——更加复杂的数据结构

更加复杂的数据结构 一、引言 目前为止&#xff0c;我们接触了大量的数据结构&#xff0c;包括利用指针实现的三剑客和 C 自带的 STL 等。 对于一些题目&#xff0c;我们不仅需要利用多个数据结果解决问题&#xff0c;还需要把这些数据结构进行嵌套和联 动&#xff0c;进行更为…

五.STM32F030C8T6 MCU开发之RTC模块基础例程

五.STM32F030C8T6 MCU开发之RTC模块基础例程 文章目录五.STM32F030C8T6 MCU开发之RTC模块基础例程0.总体功能概述1.RTC硬件介绍1.1日历的功能1.2 闹钟输出1.3 入侵检测1.4 时间戳事件检测2.RTC软件配置2.1.RTC 模块初始化配置2.2 RTC 开始时间配置2.2.1RTC 年月日 时分秒配置2.…

_linux 进程间通信(管道)

文章目录1. 进程间通信目的2. 进程间通信发展3. 进程间通信分类4. 管道1. 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#x…