SpringBoot介绍

1.什么是SpringBoot

Spring Boot是由Pivotal团队提供的全新框架,其中“Boot”的意思就是“引导”,Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速开发 Spring应用的方式。

1.1.Spring Boot 特点

• 嵌入的 Tomcat,无需部署 WAR 文件

Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。

• 简化Maven配置

Spring Boot 提供了一系列的“starter”来简化 Maven 配置。

• 自动配置

Spring Boot 提供了大量的自动配置类,开发人员不需要任何 xml 配置即可实现 Spring 的所有配置

2.构建 Spring Boot 项目

2.1.下载SpringBoot项目

1、访问http://start.spring.io/

2、选择构建工具Maven Project、Spring Boot版本以及一些工程基本信息,点击“GENERETE”下载项目压缩包

参考下图所示:

2.2maven构建SpringBoot项目

 

 2、填写项目坐标信息

设置项目保存位置

2.3.pom.xml

参考下载的springboot项目修改pom.xml

2.3.1.继承springboot父工程

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

2.3.2.设置编码格式

<!-- 项目源码及编译输出的编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

2.3.3.添加启动器

<dependencies>
        <!--  springboot的web启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

2.3.4.创建启动类

package com.by;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication //标识当前类是springboot工程的启动类
public class SpringbootHelloworldApp extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringbootHelloworldApp.class);
    }

    public static void main(String[] args) {
        /**
         * Class<?> primarySource:启动类
         * String... args:可省略
         */
        SpringApplication.run(SpringbootHelloworldApp.class, args);
    }
}

2.4.SpringBoot 的 Starter

2.4.1.使用Spring框架的问题?

  1. 依赖导入问题:每个项目都需要来单独维护自己所依赖的jar包,在项目中使用到什么功能就需要引入什么样的依赖。手动导入依赖容易出错,且无法统一集中管理

  2. 配置繁琐:在引入依赖之后需要做繁杂的配置,并且这些配置是每个项目来说都是必要的,例如web.xml配置数据库连接池配置、事务配置等等。这些配置重复且繁杂,在不同的项目中需要进行多次重复开发,这在很大程度上降低了我们的开发效率

而在SpringBoot出现之后,它为我们提供了一个强大的功能来解决上述的两个痛点,这就是SpringBoot的starter(启动器)。

2.4.2.Starter是什么?

Spring Boot通过将我们常用的功能场景抽取出来,做成的一系列的启动器,我们只需要在项目中引入这些starter,相关的所有依赖就会全部被导入进来,并且我们可以抛弃繁杂的配置,例如:

Ø spring-boot-starter-web:支持全栈式的 web 开发,包括了 tomcat 和 springMVC 等 jar包

Ø spring-boot-starter-jpa:支持 spring 以 jpa方式操作数据库的 jar 包的集合

Ø spring-boot-starter-redis:支持 redis 键值存储的数据库操作

在导入的starter之后,SpringBoot主要帮我们完成了两件事情:

Ø 相关依赖的自动导入

Ø 相关环境的自动配置

2.4.2.Starters命名

  • 官方启动器命名:

    • 前缀:spring-boot-starter-

    • 规范:spring-boot-starter-模块名

    • 举例:spring-boot-starter-web、spring-boot-starter-jdbc

  • 第三方启动器命名:

    • 后缀:-spring-boot-starter

    • 规范:模块名-spring-boot-starter

    • 举例:mybatis-spring-boot-starter

3.Spring Boot入门HelloWorld

3.1.controller

package com.zhy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

@Controller
public class HelloWordController {
    @RequestMapping("/hello")
    @ResponseBody
    public Map<String,Object> hello(){
        Map<String,Object> map = new HashMap<String, Object>();
        map.put("msg","你好,Spring Boot!!!!");
        return map;
    }
}

3.2.启动类存放位置

启动类存放的位置:

  • controller 同一个包下

  • controller 的上一级包中

3.3.自定义banner

1、banner生成网站:Spring Boot banner在线生成工具,制作下载英文banner.txt,修改替换banner.txt文字实现自定义,个性化启动banner-bootschool.net

2、将生成的banner.txt复制到resources目录中

3、测试

4.Spring Boot的全局配置文件

SpringBoot项目使用一个全局的配置文件application.properties或者是application.yml,在resources目录下或者类路径下的/config下,一般我们放到resources下

4.1.properties配置文件

4.1.1.修改tomcat的端口为8888

server.port=8888

4.1.2.修改访问项目时的名字

server.servlet.context-path=/springboot

4.2.yml配置文件

yml是 Spring Boot 中新增的一种配置文件格式。特点:具备天然的树状结构

4.2.1.yml与 properties的区别

  • 配置文件的扩展名有变化

  • 配置文件中的语法有变化:

1、在 yml 中使用“ :”进行分割

3、在 yml中缩进时不允许使用tab键,缩进的空格数不重要,只要是左对齐的一列数据,都是同一个层级

3、每个K的冒号后面一定要加一个空格

4.2.2.yml方式配置springboot

server:
  port: 8888
  servlet:
    context-path: /springboot_helloword

5.Spring Boot项目的两种发布方式

5.1.方式1:通过jar包发布

步骤1:在pom中添加一个SpringBoot的构建的插件

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <!--自动检测项目中的 main 函数-->
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

步骤2:在maven视图中,选择“package”,在target中会产生xxx.jar包

步骤3:然后在cmd终端发布项目

java -jar xxx.jar

5.2.方式2:通过war包发布

步骤1:在pom.xml文件中将jar修改为war

<packaging>war</packaging>

步骤2:设置tomcat启动器依赖范围

maven依赖范围参考:资料/maven依赖作用范围.png

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <!--tomcat启动器依赖范围-->
            <scope>provided</scope>
        </dependency>

 步骤3:设置war包的名字

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <warName>hello</warName>
                </configuration>
            </plugin>

步骤4:修改启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

6.总结

-------------------------------Spring Boot入门---------------------------------
一、springboot介绍
    springboot(spring+springmvc):不是对spring功能的增强,而是提供了一种快速开发spring应用的方式
    特点:
        简化xml配置
        简化maven配置
        内嵌tomcat
二、springboot项目搭建
    1、创建maven工程、并继承springboot父工程(dependencyManagement)
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.3.2.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    2、添加启动器
        spring-boot-starter-web
    3、创建启动类(放到controller、service、mapper的上级目录,eg:com.by)
        package com.by; //springboot扫描的包

        @SpringBootApplication //标识当前类是springboot工程的启动类
        public class SpringbootHelloworldApp {
            public static void main(String[] args) {
                SpringApplication.run(SpringbootHelloworldApp.class, args);
            }
        }
三、springboot的starter
    1、starter是什么?
        starter(启动器):是一对依赖和配置类的集合
    2、starter的命名规范
        官方:
            前缀:spring-boot-starter-
            规范:spring-boot-starter-模块名
            举例:spring-boot-starter-web
        第三方:
            前缀:-spring-boot-starter
            规范:模块名-spring-boot-starter
            举例:mybatis-spring-boot-starter
四、springboot的配置文件
    1、application.properties
        server.port=8888
        server.servlet.context-path=/springboot_helloworld
    2、application.yml(树状结构)
        server:
           port: 8888
           servlet:
              context-path: /springboot_helloworld
        yml语法:
            ①“.”------>“:”
            ②“=”------>“:空格”
            ③空格缩进
五、两种发布方式
    1、jar方式
        1)添加spring-boot-maven-plugin插件(自动检测main函数)
        2)打jar包
        3)java -jar xxx.jar
    2、war方式
        1)设置打包方式:<packaging>war</packaging>
        2)设置tomcat启动器的依赖范围:<scope>provided</scope>
        3)修改启动类(告诉tomcat启动类在哪)
            public class SpringbootHelloworldApp extends SpringBootServletInitializer {

                @Override
                protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
                    return builder.sources(SpringbootHelloworldApp.class);
                }
            }
        4)打war包
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

案例128:基于微信小程序的在线视频教育系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

2024年【北京市安全员-C3证】复审考试及北京市安全员-C3证证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 北京市安全员-C3证复审考试考前必练&#xff01;安全生产模拟考试一点通每个月更新北京市安全员-C3证证考试题目及答案&#xff01;多做几遍&#xff0c;其实通过北京市安全员-C3证模拟考试题很简单。 1、【多选题】《…

视频剪辑实例:探索画中画视频剪辑,创意无限可能,批量制作视频

随着社交媒体和视频平台的迅速发展&#xff0c;视频剪辑&#xff0c;作为视频创作的核心环节&#xff0c;对于呈现内容、传达情感和提升体验具有至关重要的作用。现在来看云炫AI智剪的视频剪辑实例&#xff0c;如何批量制作视频&#xff0c;提升工作效率。 画中画视频合并成功…

yolov8n 瑞芯微RKNN、地平线Horizon芯片部署、TensorRT部署,部署工程难度小、模型推理速度快

特别说明&#xff1a;参考官方开源的yolov8代码、瑞芯微官方文档、地平线的官方文档&#xff0c;如有侵权告知删&#xff0c;谢谢。 模型和完整仿真测试代码&#xff0c;放在github上参考链接 模型和代码。 因为之前写了几篇yolov8模型部署的博文&#xff0c;存在两个问题&…

openGauss学习笔记-198 openGauss 数据库运维-常见故障定位案例-分析查询效率异常降低的问题

文章目录 openGauss学习笔记-198 openGauss 数据库运维-常见故障定位案例-分析查询效率异常降低的问题198.1 分析查询效率异常降低的问题198.1.1 问题现象198.1.2 处理办法 openGauss学习笔记-198 openGauss 数据库运维-常见故障定位案例-分析查询效率异常降低的问题 198.1 分…

【计算机网络】--集线器,路由器,交换机对比

&#x1f3b5;1.集线器 &#x1f308;1.1集线器概念 集线器是一种网络设备&#xff0c;广泛应用于计算机局域网环境中。它通常具有多个以太网接口&#xff0c;用于将多个计算机或其他网络设备连接在一起&#xff0c;形成一个网络拓扑结构。 &#x1f308;2.集线器的作用 集线器…

市场复盘总结 20240115

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 昨日主题投资 连板进级率 0% 失效 二进三&#xff1a; 进级率 中位数50% 最常用的二种方法&#xff1a; 方…

网络编程day2

TCP的基本通信 服务器端 #include <head.h> #define SER_PORT 8888 //服务器端口号 #define SER_IP "192.168.125.193" //服务器客户端int main(int argc, const char *argv[]) {//1、创建用于连接的套接字int sfd socket(AF_INET, …

一篇文章搞懂Jenkins持续集成解决的是什么问题

01 持续集成的定义 大师 Martin Fowler 是这样定义持续集成的: 持续集成是一种软件开发实战, 即团队开发成员经常集成他们的工作. 通常, 每个成员每天至少集成一次, 也就意味着每天可能发生多次集成. 持续集成并不能消除Bug, 而是让它们非常容易发现和改正. 根据对项目实战的…

@Controller层自定义注解拦截request请求校验

一、背景 笔者工作中遇到一个需求&#xff0c;需要开发一个注解&#xff0c;放在controller层的类或者方法上&#xff0c;用以校验请求参数中(不管是url还是body体内&#xff0c;都要检查&#xff0c;有token参数&#xff0c;且符合校验规则就放行)是否传了一个token的参数&am…

从零学Java 线程池

Java 线程池 文章目录 Java 线程池1 线程池概念1.1 现有问题1.2 线程池 2 线程池原理3 如何使用线程池3.1 获取线程池 4 创建线程的第四种方式 1 线程池概念 1.1 现有问题 线程是宝贵的内存资源、单个线程约占1MB空间&#xff0c;过多分配易造成内存溢出。频繁的创建及销毁线…

新版网易滑块

突然发现脸皮厚根本没用&#xff0c;大冬天的&#xff0c;风吹过来还是会冷。 大哥们多整件衣裳&#xff0c;好冷&#xff01;&#xff01;&#xff01;&#xff01; 网易更新了&#xff0c;这俩 dt跟f值。 dt为 这里返回的&#xff0c;忽略掉他。 data参数中的d值&#xff…

基于深度学习的时间序列算法总结

1.概述 深度学习方法是一种利用神经网络模型进行高级模式识别和自动特征提取的机器学习方法&#xff0c;近年来在时序预测领域取得了很好的成果。常用的深度学习模型包括循环神经网络&#xff08;RNN&#xff09;、长短时记忆网络&#xff08;LSTM&#xff09;、门控循环单元&a…

【C++】演讲比赛流程管理系统

1、演讲比赛程序需求 2、项目创建 参考之前的案例文章&#xff0c;去创建项目 3、创建管理类 4、菜单功能 5、退出功能 6、演讲比赛功能

【LV12 DAY9 ADC实验】

电压在1501mv~1800mv时&#xff0c;LED2、LED3、LED4、LED5点亮 电压在1001mv~1500mv时&#xff0c;LED2、LED3、LED4点亮 电压在501mv~1000mv时&#xff0c;LED2、LED3点亮 电压在0mv~500mv时&#xff0c;LED2闪烁 #include "exynos_4412.h"void delay(unsigned in…

【从0上手cornerstone3D】核心概念解析(下)

前言 渲染Dicom文件的具体流程请查看&#xff1a;如何渲染一个基础的Dicom文件&#xff08;上&#xff09;Github演示&#xff1a;https://github.com/jianyaoo/vue-cornerstone-demo逻辑图在线链接&#xff1a;逻辑图在线链接在线查看显示效果&#xff08;加载需时间&#xf…

产品经理NPDP

产品经理是告诉团队做正确的事情&#xff0c;项目经理是告诉团队正确地做事情 产品经理的核心能力是商业洞察能力、产品规划与设计、团队管理能力。 产品经理国际资格认证(NPDP)

解决防爬虫机制方法(二)

最近为了完成学校的大数据的作业&#xff0c;老师要我们爬一个的网站&#xff0c;里面有还算不错的防爬机制&#xff0c;忙活了几天&#xff0c;总结出一些常见的防爬机制的应对方法&#xff0c;方法均来自个人实战总结&#xff0c;非专业爬虫角度分析 承接上一次讲的方法解决…