当前位置: 首页 > news >正文

SpringBoot的概述与搭建

目录

一.SpringBoot的概述

二.SpringBoot 特点

三.SpringBoot 的核心功能

3.1起步依赖

3.2自动配置

四.SpringBoot 开发环境构建

五.SpringBoot 配置文件

六.SpringBoot数据访问管理

七.springboot注解

八.springboot集成mybatis

九.springboot全局异常捕获与处理


一.SpringBoot的概述

        Spring Boot 是由 Pivotal 团队提供的在 spring 框架基础之上开发的框架,其设计目的是用来简化应用的初始搭建以及开发过程
        SpirngBoot 本身并 不提供 Spring 框架 的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。
        Spring Boot 以 约定大于配置(程序界的规定大于配置文件) 的核心思想,从而使开发人员不再需要定义样板化的配置。它集成了大量常用的第三方库配置(例如 Redis,Jpa RabbitMQ,Quartz 等等),SpringBoot 应用中这些第三方库几乎可以零配置的开箱即用,通过这种方式,SpringBoot 致力于在蓬勃发展的快速应用开发领域成为领导者。

二.SpringBoot 特点

1.创建独立的 spring 应用程序
2.直接内嵌 tomcat、jetty 和 undertow
3.提供了固定化的“starter”配置,以简化构建配置
4.尽可能的自动配置 spring 和第三方库
5.提供产品级的功能,如:安全指标、运行状况监测和外部化配置等
6.绝对不会生成代码,并且不需要 XML 配置

三.SpringBoot 的核心功能

3.1起步依赖

        起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。

3.2自动配置

        SpringBoot 的自动配置是一个 运行 时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定 Spring 配置应该用哪个,不该用哪个。该过程是 Spring 自动完成 的。

四.SpringBoot 开发环境构建

首先需要创建一个普通的 maven 项目
        在 pom.xml 文件中添加以下配置
<!-- 依赖的父级工程 -->
< parent >
< groupId >org.springframework.boot</ groupId >
< artifactId >spring-boot-starter-parent</ artifactId >
< version >2.6.6</ version >
< relativePath />
</ parent >

         根据自己的jdk版本

<!-- 指定 jdk 版本 -->
< properties >
< java.version >1.8</ java.version >
</ properties >

<!-- 添加基本的 springweb 依赖 -->
< dependencies >
< dependency >
< groupId >org.springframework.boot</ groupId >
< artifactId >spring-boot-starter-web</ artifactId >
</ dependency >
</ dependencies >
<!-- 打包插件 -->
< build >
< plugins >
< plugin >
< groupId >org.springframework.boot</ groupId >
< artifactId >spring-boot-maven-plugin</ artifactId >
< version >2.6.6</ version >
</ plugin >
</ plugins >
</ build > 
        创建基本包目录,在包下创建一个启动类,如下所示:
创建基本包目录,在包下创建一个启动类,如下所示:
@SpringBootApplication
public class NewsApplication {
public static void main(String[] args) {
SpringApplication.run(NewsApplication.class);}
}

         图片如下:

        SpringBoot 集成 web 组件后, 内置了 tomcat 服务器 ,一个 springboot 应用相当于一个独立的服务,可以使用启动类中的 main 方法启动 springboot 程序.就会生成下面的springboot的logo,

        在线生成启动 logo:https://www.bootschool.net/ascii-art.

        下载存放在 resources 目录下即可. 注意文件名必须为banner.txt

五.SpringBoot 配置文件

        SpringBoot 使用一个全局的配置文件( 配置文件名是固定的 , 必须为 application ),用来存储项目中需要用到的各种配置参数. 配置文件格式有两种,一种为 properties 格式,一种 yaml 格式。
application.properties 属性 文件 格式,内容为键值对: server.port=8080
properties 格式比较简单,没有什么难度,在此我们以第二种 yaml 格式为例.
application.yml
yml 是 YAML(YAML Ain’t Markup Language)语言的文件,以数据为中心.
yml 配置示例:
server:
port: 8080
yaml 基本语法:
语法结构:key: 空格 value;
以此来表示一对键值对。 注意:(冒号后的空格不能省略,否则会出错);
以空格的缩进来控制 层级关系 只要是左边对齐的一列数据都是同一个层级的
字面量直接写在后面就可以,字符串默认不用加上双引号或者单引号;
# 作为注释符号.
案例:
mybatis:
  type-aliases-package: com.hkt.news.model
  mapper-locations: classpath:mappers/*Mapper.xml
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

使用@Value 注解标签将配置文件中的内容映射到类中的属性.

@Value("${user.name}")

六.SpringBoot数据访问管理


数据源配置:

首先,为了连接数据库需要引入 jdbc 支持,在 pom.xml 中引入如下配置:

添加依赖:

<dependency>

          <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-starter-jdbc</artifactId>

</dependency>

 使用mysql数据库还需要添加mysql依赖:

<!--mysql-->    
    <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
    </dependency>

 添加数据源之后,为了和数据库连接,我们还需要在 application.yml 中去配置信息:

spring:

  datasource:

     url: jdbc:mysql://127.0.0.1:3306/数据库名?serverTimezone=Asia/Shanghai

     username: 用户名

     password: 用户密码

     driver-class-name: com.mysql.cj.jdbc.Driver

 springboot整合阿里数据源

首先需要导入阿里数据源的 .jar 包:

<!-- 阿里数据源 -->
<dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.10</version>
</dependency>

 在 application.yml 中去配置信息:

 //他们和url,username,password在一个层级中
 type: com.alibaba.druid.pool.DruidDataSource
 initialSize: 5 #初始化时建立物理连接的个数
 maxActive: 20 #最大连接池数量

七.springboot注解


springboot 实现自动装配的核心仍然是使用注解标签 

@SpringBootApplication 是 springboot 核心注解,使用在启动类前。

其中包含 @SpringBootConfiguration,@EnableAutoConfiguration, @ComponentScan.

@Configuration 一般使用在拦截器的前面。

 

加入@Configuration 注解,表明这就是一个配置类。有一个 myBean()的方法并用@Bean 进行注释,返回一个 MyBean()的实例,表明这个方法是需要被Spring 进行管理的 bean。@Bean 如果不指定名称的话,默认使用 myBean 名称,也就是小写的名称。

@Bean

相当于 XML 中的<bean></bean>,放在方法的上面,而不是类,意思是产生一个 bean,并交给 spring 管理。eg:(类似于之前写过的跨域问题)

package com.hkt.news.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import java.util.Collections;
@Configuration
public class CorsConfig {@Beanpublic CorsFilter corsFilter() {CorsConfiguration corsConfiguration = new CorsConfiguration();//1,允许任何来源corsConfiguration.setAllowedOriginPatterns(Collections.singletonList("*"));//2,允许任何请求头corsConfiguration.addAllowedHeader(CorsConfiguration.ALL);//3,允许任何方法corsConfiguration.addAllowedMethod(CorsConfiguration.ALL);//4,允许凭证corsConfiguration.setAllowCredentials(true);UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**", corsConfiguration);return new CorsFilter(source);}
}

八.springboot集成mybatis


首先在 pom.xml 文件中导入依赖的 jar 包:

<dependency>

       <groupId>org.mybatis.spring.boot</groupId>

       <artifactId>mybatis-spring-boot-starter</artifactId>

       <version>2.1.4</version>

</dependency>

 下面在 application.yml 中配置信息:

mybatis:
  type-aliases-package: com.hkt.news.model  //模型类地址
  mapper-locations: classpath:mappers/*Mapper.xml 
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

  最后还需要在启动类前加上 @MapperScan("接口所在的包地址") 注解。eg:

 

九.springboot全局异常捕获与处理


      Springboot 对于异常的处理也做了不错的支持 ,它提供了一个 @RestControllerAdvice 注解以及 @ExceptionHandler 注解,前者是用来开启全局的异常捕获,后者则是说明捕获哪些异常,对那些异常进行处理。eg:

package com.hkt.news.util;import com.hkt.news.model.Result;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;@RestControllerAdvice
public class GlobalExceptionHandler {/*** 全局异常处理*/@ExceptionHandler(Exception.class)public Result globalException(Exception e) {Result result = new Result(500,"系统忙"+e.getMessage(),null);e.printStackTrace();return result;}
}

若出现异常,则打印错误信息。

兄弟姐妹们,记得一键三连哦

相关文章:

  • SIMETRIX 探头和测量
  • [java][gps]GPS坐标系转换
  • JVM总结
  • Python in Excel作图分析实战!
  • JAVA入门1——理论+helloworld
  • Word导出样式模板,应用到其他所有word
  • MySQL 之索引详解
  • Chrome开发者工具如何才能看到Vue项目的源码
  • java初识
  • 【注册/登录安全分析报告:孔夫子旧书网】
  • 腾讯云SDK产品功能
  • 动态规划入门题目->使用最小费用爬楼梯
  • 【全新课程】正点原子《基于GD32 ARM32单片机项目实战入门》培训课程上线!
  • 一行代码,AI大模型训练成本再降30%,混合精度训练再升级
  • 不夸张、我就是这样考过PMP~
  • 03Go 类型总结
  • Angular 4.x 动态创建组件
  • CSS 三角实现
  • ES6--对象的扩展
  • Python - 闭包Closure
  • tab.js分享及浏览器兼容性问题汇总
  • webpack4 一点通
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 前端
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (4)事件处理——(7)简单事件(Simple events)
  • (AngularJS)Angular 控制器之间通信初探
  • (PADS学习)第二章:原理图绘制 第一部分
  • (苍穹外卖)day03菜品管理
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (函数)颠倒字符串顺序(C语言)
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)可以带来幸福的一本书
  • (转载)深入super,看Python如何解决钻石继承难题
  • . Flume面试题
  • .Net 6.0 Windows平台如何判断当前电脑是否联网
  • .net CHARTING图表控件下载地址
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .netcore 获取appsettings
  • .Net的DataSet直接与SQL2005交互
  • .Net中的设计模式——Factory Method模式
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [20160807][系统设计的三次迭代]
  • [24年新算法]NRBO-XGBoost回归+交叉验证基于牛顿拉夫逊优化算法-XGBoost多变量回归预测
  • [30期] 我的学习方法