java框架第五课(终极版本)SpringBoot

一.关于SpringBoot

(1)回忆Spring

传统的Spring由Spring 框架(ioc,aop)加mybatis加Springweb组成,虽然相比原生的java程序Spring框架帮我们大大减少了代码量,减少了冗余,提高了开发效率但是由于Spring框架下的配置和相关的jar包依赖过多,导致我们在开发业务代码时常常需要大量精力去搞相关配置,还是不利于我们的开发,因此Spring 开发官方帮我们将Spring框架再次做了一个封装。

优点
开源,轻量级,非侵入式的一站式框架,简化企业级应用开发。
控制反转(IOC),依赖注入(DI)降低了组件之间的耦合性,实现了软件各层之间 的解耦。
面向切面(AOP),利用它可以很容易实现一些拦截,如事务控制等。
spring 对于主流的应用框架提供了很好的支持,例如 mybatis。
spring 提供有自己的 mvc 实现。
缺点
虽然 spring 的组件代码是轻量级的,但它的配置却是重量级的
<!--aop:开启自动代理-->
<aop:aspectj-autoproxy/>
</bean><!-- 开启注解事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager"/><!--    开启 springweb 注解-->
<mvc:annotation-driven></mvc:annotation-driven>
虽然 spring 引入了注解功能,但是仍然需要编写大量的模板化配置文件。
项目的依赖管理也是一件耗时耗力的事情,在环境搭建时,需要分析要导入大
量库的坐标,而且还需要分析导入与之有依赖关,一旦选错依赖的版本,随之而
来的不兼容问题就会严重阻碍项目的开发进度。
Spring Boot 对上述 spring 的缺点进行的改善和优化,基于约定优于配置的思
想.可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入
到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目
周期.

 (2)SpringBoot的简述

Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用 于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是 用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开 发者体验的工具。
Spring Boot 以约定大于配置的核心思想,从而使开发人员不再需要定义样 板化的配置。它集成了大量常用的第三方库配置(例如 Redis,Jpa RabbitMQ, Quartz 等等),Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用, 通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域成为领导者。
SpringBoot搭建过程简化体现:
(1)由于约定大于配置思想,把很多开发默认的做法直接简化。
(2)可以自动将相关的依赖加入进来(继承性,基础性)。
Spring Boot 你只需要“run”就可以非常轻易的构建独立的、企业级别的 spring 应用。
我们为 spring 平台和第三方依赖库提供了一种固定化的使用方式,使你能非常 轻松的开始开发你的应用程序。大部分 SpringBoot 应用只需要很少的配置。

 (3)SpringBoot的特点

创建独立的 spring 应用程序
直接内嵌 tomcat、jetty 和 undertow
提供了固定化的“starter”配置,以简化构建配置
尽可能的自动配置 spring 和第三方库
提供产品级的功能,如:安全指标、运行状况监测和外部化配置等
绝对不会生成代码,并且不需要 XML 配置
springBoot 的核心功能
起步依赖
起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。
自动配置
Spring Boot 的自动配置是一个运行时(更准确地说,是应用程序启动时)
的过程,考虑了众多因素,才决定 Spring 配置应该用哪个,不该用哪个。该过程是 Spring 自动完成的。

二.SpringBoot开发环境的搭建 

(1)创建一个普通的 maven 项目在 pom.xml 文件中添加以下配置.

<!-- 依赖的父级工程 -->
< parent >
< groupId >org.springframework.boot</ groupId >
< artifactId >spring-boot-starter-parent</ artifactId >
< version >2.6.6</ version >
< relativePath />
</ parent >
<!-- 指定 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 >

(2)创建基本包目录,在包下创建一个启动类,如下所示:

@SpringBootApplication

public class NewsApplication {
public static void main ( String [] args) {
SpringApplication . run ( NewsApplication . class );
}
}
Springboot 集成 web 组件后,内置了 tomcat 服务器,一个 springboot 应用相
当于一个独立的服务,可以使用启动类中的 main 方法启动 springboot 程序.

  

在线生成启动 logo:(有意思的小玩意)
https://www.bootschool.net/ascii-art
下载存放在 resources 目录下即可.

三.SpringBoot的配置文件

(1)配置的两种形式介绍

Spring Boot 使 用 一 个 全 局 的 配 置 文 件 ( 配 置 文 件 名 是 固 定 的 , 必 须 为application),用来存储项目中需要用到的各种配置参数。
配置文件格式有两种,一种为 properties 格式,一种 yaml 格式。
(1) application.properties 属性文件格式,内容为键值对。
server.port=8080
properties 格式比较简单,没有什么难度,在此我们以第二种 yaml 格式为例.
(2)application.yml
yml 是 YAML(YAML Ain’t Markup Language)语言的文件,以数据为中心.
yml 配置示例
server:
port: 8080
yaml 基本语法:
语法结构:key:空格 value;
以此来表示一对键值对(空格不能省略);
以空格的缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级
的;
字面量直接写在后面就可以,字符串默认不用加上双引号或者单引号;
以#作为注释符

(2) SpringBoot数据访问管理

SpringBoot 数据访问管理
数据源配置
首先,为了连接数据库需要引入 jdbc 支持,在 pom.xml 中引入如下配置:
< dependency >
< groupId >org.springframework.boot</ groupId >
< artifactId >spring-boot-starter-jdbc</ artifactId >
</ dependency >
记得添加 mysql 驱动依赖

(3)在 application.yml 中配置数据源信息 

spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/ssmdb?serverTimezone=Asia/Shanghai
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver

(4)SpringBoot整合阿里数据源 

导入阿里数据源 jar
在 yml 文件中注册阿里数据库连接池,连接数据库
type: com.alibaba.druid.pool.DruidDataSource
initialSize: 5 初始化时建立物理连接的个数
maxActive: 20 最大连接池数量
<!--阿里数据源-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version>
</dependency>

 (5)SpringBoot的注解

springboot 实现自动装配的核心仍然是使用注解标签,
@SpringBootApplication 是 springboot 核心注解,其中包含
@SpringBootConfiguration,@EnableAutoConfiguration, @ComponentScan.
@Configuration
加入@Configuration 注解,表明这就是一个配置类。有一个 myBean()的方法
并用@Bean 进行注释,返回一个 MyBean()的实例,表明这个方法是需要被
Spring 进行管理的 bean。@Bean 如果不指定名称的话,默认使用 myBean
名称,也就是小写的名称。
@Bean
相当于 XML 中的<bean></bean>,放在方法的上面,而不是类,意思是产生一
个 bean,并交给 spring 管理
package com.ffyc.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);}
}

 (6)SpringBoot集成mybatis

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.ff.cms.bean
mapper-locations: classpath:mapper/*Mapper.xml
configuration:
map-underscore-to-camel-case: true
cache-enabled: true
启动类上添加@MapperScan("接口所在的包地址")@MapperScan("接口所在
的包地址")

(7)SpringBoot统一异常处理

日常开发过程中,难免有的程序会因为某些原因抛出异常,而这些异常一 般都是利用 try ,catch 的方式处理异常或者 throw,throws 的方式抛出异常 不管。这种方法对于程序员来说处理也比较麻烦,所以我们希望既能方便程序员 编写代码,不用过多的自己去处理各种异常编写重复的代码又能提升用户的体 验,这时候全局异常处理就显得很重要也很便捷了,是一种不错的选择。
package com.ffyc.news.util;import com.ffyc.news.model.Result;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestController;
/*@RestControllerAdvice 注解以及 @ExceptionHandler 注解,前者是用来
开启全局的异常捕获,后者则是说明捕获哪些异常,对那些异常进行处理。*/
@RestController
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public Result globalExceptionHandler(Exception e){Result result=new Result(500,"系统忙"+e.getMessage(),null);e.printStackTrace();return result;}}

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

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

相关文章

Denodo 连续 4 年获评 Gartner® 数据集成工具魔力象限™ 领导者

Gartner 在其 2023 年数据集成工具魔力象限中连续第四年将 Denodo 评为“领导者”。 Gartner 表示&#xff1a;“由于对数据编织架构、数据产品交付以及支持生成式 AI 的集成数据的需求即将到来&#xff0c;数据集成工具市场正在蓬勃发展。数据和分析领导者应该利用这项研究来…

RabbitMQ 基础架构流程 数据隔离 创建用户

介绍 publisher&#xff1a;消息发送者-exchange&#xff1a;交换机&#xff0c;复制路由的消息-queue&#xff1a;队列&#xff0c;存储消息consumer&#xff1a;消息的消费者 工作流程 publisher消息发送者 -> exchange 交换机 -> queue 队列 -> consumer 消息的消…

基于STM32的多功能车位锁设计

本设计基于STM32的多功能车位锁&#xff0c;该系统主要包括&#xff1a;测距模块、光强采集模块、主控芯片模块、显示模块、摄像模组等。系统以STM32单片机作为主控芯片用来对系统中的外设进行控制并且对传输过来的数据进行处理。通过K210模块来实现图像识别的功能检测车牌是否…

加码产品创新、革新搜索体验 夸克登顶“AI产品榜”月榜

随着人工智能应用到生活中的方方面面&#xff0c;AI生产力工具实现了快速爆发。日前&#xff0c;AI新榜发布8月“AI产品榜”&#xff0c;阿里巴巴旗下夸克凭借一系列产品创新和大模型能力跃升占据首位。在升级App端“超级搜索框”、推出PC端“系统级全场景AI”后&#xff0c;夸…

三文带你轻松上手鸿蒙的AI语音01-实时语音识别

三文带你轻松上手鸿蒙的AI语音01-实时语音识别 前言 HarmonyOSNext中集成了强大的AI功能。Core Speech Kit&#xff08;基础语音服务&#xff09;是它提供的众多AI功能中的一种。 Core Speech Kit&#xff08;基础语音服务&#xff09;集成了语音类基础AI能力&#xff0c;包…

Redis - 主从复制

文章目录 目录 文章目录 前言 1. 配置 建立复制 断开复制 传输延时 2. 主从拓扑结构 一主一从 一主多从 树状 三. 原理 数据同步 psync replicationid/replid(复制id) master_replid 和 master_replid2 offset (偏移量) psync 运行流程 全量复制 部分复制 …

echarts多个环形图

echarts图表集 var dataValue [{name:今日待分配方量,value:49}, {name:今日已分配方量,value:602}, {name:今日完成方量,value:1037}]var piedata1 [{name: 1#拌和机,value: 20},{name: 2#拌和机,value: 22},{name: 3#拌和机 ,value: 17},{name: 4#拌和机,value: 18},{name…

基于“SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价及拓展应用

近年来&#xff0c;国内外学者在生态系统的敏感性、适应能力和潜在影响等方面开展了大量的生态脆弱性研究&#xff0c;他们普遍将生态脆弱性概念与农牧交错带、喀斯特地区、黄土高原区、流域、城市等相结合&#xff0c;评价不同类型研究区的生态脆弱特征&#xff0c;其研究内容…

【JAVA基础】StringUtils.isEmpty、StringUtils.isBlank()、Objects.isNull()三者区别

&#x1f4dd;个人主页&#x1f339;&#xff1a;个人主页 ⏩收录专栏⏪&#xff1a;日常经验 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339;&#xff0c;让我们共同进步&#xff01; 总是区分不清楚这几个的差别&#xff1a;我们来直接验证一下&#…

活动系统开发之采用设计模式与非设计模式的区别-数据库设计及代码设计

1、数据库ER图 2、应用框架选用 PHP语言对应的thinkphp6.1应用框架 3、功能代码设计(后端) a、父类Base.php i&#xff1a;控制登录&#xff0c;只能登录后管理员才能操作&#xff1b; ii&#xff1a;控制按钮权限&#xff0c;管理员不仅要登录&#xff0c;且必须要有对应菜单…

【操作系统】进程同步之共享内存

进程的线程共享进程资源&#xff0c;而进程共享计算机资源。 在某种程度上&#xff0c;多进程是共享物理内存的。 由于操作系统的进程管理&#xff0c;不同的进程有自己独立的内存空间&#xff0c;互不干扰。 但是共享内存可以打破这个限制。 共享内存允许不相关的进程访问同…

Linux云计算学习笔记11 (计划任务)

一.基本概念 在Linux操作系统中&#xff0c;除了用户即时执行的命令操作以外&#xff0c;还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务&#xff08;如定期备份、定期采集监测数据&#xff09;。试想一下&#xff0c;如果系统要求在业务不那么繁忙的半夜进行…

【2024数学建模国赛赛题思路】C题第四套思路已出丨仅供参考

问题一思路分析 假定各种农作物未来的预期销售量、种植成本、亩产量和销售价格相对于2023年保持稳定&#xff0c;每季种植的农作物在当季销售。如果某种作物每季的总产量超过相应的预期销售量&#xff0c;超过部分不能正常销售。请针对以下两种情况&#xff0c;分别给出该乡村…

免费申请aws一年免费服务器使用教程

由于近期要测试一个公网项目&#xff0c;对比之下&#xff0c;选择了aws服务器&#xff0c;免费使用一年。 准备&#xff1a;一个visa信用卡即可&#xff0c;需要一个外网邮箱&#xff08;我这边使用的hotmail&#xff09; 注册的步骤不再赘述&#xff0c;切记几个点&#xff0…

景联文科技:专业图像采集服务,助力智能图像分析

景联文科技是专业数据服务公司&#xff0c;致力于为人工智能企业提供从数据采集、清洗到标注的全流程解决方案。协助客户解决AI开发过程中数据处理环节的关键问题&#xff0c;助力企业实现智能化转型。 1.多样化的图像采集服务 景联文科技提供多样化的图像采集服务&#xff0c…

udp网络通信 socket

套接字是实现进程间通信的编程。IP可以标定主机在全网的唯一性&#xff0c;端口可以标定进程在主机的唯一性&#xff0c;那么socket通过IP端口号就可以让两个在全网唯一标定的进程进行通信。 套接字有三种&#xff1a; 域间套接字&#xff1a;实现主机内部的进程通信的编程 …

Kettle发送邮件功能如何配置以实现自动化?

kettle发送邮件如何设置&#xff1f;Kettle配置发送邮件的方法&#xff1f; Kettle发送邮件功能能够帮助用户在数据处理过程中自动发送电子邮件&#xff0c;极大地提高了工作效率。AokSend将详细介绍如何配置Kettle发送邮件功能&#xff0c;以实现自动化操作。 Kettle发送邮件…

C++笔记19•数据结构:红黑树(RBTree)•

红黑树 1.简介&#xff1a; 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路 径会比其他路径长出俩倍…

使用百度飞桨PaddleOCR进行OCR识别

1、代码及文档 代码&#xff1a;https://github.com/PaddlePaddle/PaddleOCR?tabreadme-ov-file 介绍文档&#xff1a;https://paddlepaddle.github.io/PaddleOCR/ppocr/overview.html 2、依赖安装 在使用过程中需要安装库&#xff0c;可以依据代码运行过程中的提示安装。…

MySQL Email验证流程详解:从注册到激活!

MySQL Email通知系统搭建教程&#xff01;如何从MySQL发送邮件&#xff1f; MySQL Email验证是一个至关重要的环节&#xff0c;它确保了用户注册过程的安全性和有效性。AokSend将详细介绍从用户注册到MySQL Email激活的完整流程&#xff0c;帮助开发者更好地理解和实现这一功能…