对spring框架的搭建进行封装---springboot

news2024/11/17 7:28:29

目录

一.回顾spring

二.springboot概述

三.springboot的特点

四.springboot环境搭建

 五.springboot配置文件

六.springboot数据访问管理

 七.springboot注解

 八.springboot集成mybatis

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


一.回顾spring

优点

开源,轻量级,非侵入式一站式框架,简化企业级应用开发。控制反转(IOC),依赖注入(DI)降低了组件之间的耦合性,实现了软件各层之间 的解耦。

面向切面(AOP),利用它可以很容易实现一些拦截,如事务控制等。

spring 对于主流的应用框架提供了很好的支持,例如 mybatis。

spring 提供有自己的 mvc 实现。

缺点

虽然 spring 的组件代码是轻量级的,但它的配置却是重量级的。虽然 spring引入了注解功能,但是仍然需要编写大量的模板化配置文件.项目的依赖管理也是一件耗时耗力的事情,在环境搭建时,需要分析要导入大量库的坐标,而且还需要分析导入与之有依赖关,一旦选错依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。

Spring Boot 对上述 spring 的缺点进行的改善和优化,基于约定优于配置的思想.

可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。

二.springboot概述

Spring Boot 是由 Pivotal 团队提供的在 spring 框架基础之上开发的框架,其设计目的是用来简化应用的初始搭建以及开发过程。

Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具.Spring Boot 以约定大于配置的核心思想,从而使开发人员不再需要定义样板化的配置。它集成了大量常用的第三方库配置(例如 Redis,Jpa RabbitMQ,Quartz 等等),Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用。

通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域成为领导者。

在Spring Boot 只需要“run”就可以非常轻易的构建独立的、企业级别的spring 应用。

三.springboot的特点

创建独立的 spring 应用程序直接内嵌 tomcat、jetty 和 undertow 提供了固定化的“starter”配置

以简化构建配置尽可能的自动配置 spring 和第三方库提供产品级的功能,如:安全指标、运行状况监测和外部化配置等绝对不会生成代码,并且不需要 XML 配置。

springboot的核心功能:

起步依赖

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

自动配置

Spring Boot 的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定 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 版本-->

<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>

 springboot中内置了服务器,所以不需要像以前一样将项目部署到tomcat服务器中,只需要创建一个启动类:

 创建启动类之后,就不需要启动服务器,直接启动此类即可。、

启动后如下:

 拓展:启动时的logo可以自行切换,只需要在resources文件夹下,创建一个banner.txt就可以实现启动logo的切换了。(在线生成启动logo的网址:https://www.bootschool.net/ascii-art

 五.springboot配置文件

      Spring Boot 使用一个全局的配置文件( 配置文件名是固定的,必须为 application),用来存储项目中需要用到的各种配置参数.配置文件格式有两种,一种为 properties 格式,一种 yaml 格式.

1.application.properties

属性文件格式,内容为键值对。eg:

server.port=8080 (键=值)

 2.application.yml

yml 是 YAML(YAML Ain’t Markup Language)语言的文件,以数据为中心。eg:

server:
(空格)port:(空格)8080(空格必须存在,格式要求)

 yaml的基本语法:

语法结构:key:空格 value;

以此来表示一对键值对(空格不能省略);

以空格的缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的;

字面量直接写在后面就可以,字符串默认不用加上双引号或者单引号;

以#作为注释符号.

eg:

user:
   name:  zhangsan
   age:   20

使用@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.zyk.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 {

    @Bean
    public 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.zyk.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:

@RestControllerAdvice
public class GlobalExceptionHandler {
/**
* 异常处理
*/
@ExceptionHandler(Exception.class)
public CommonResult globalException(Exception e) {
     CommonResult commonResult = new CommonResult(500,e.getMessage());
     return commonResult;
   }
}

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

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

相关文章

Springboot + netty + rabbitmq + myBatis

目录 0.为什么用消息队列1.代码文件创建结构2.pom.xml文件3.三个配置文件开发和生产环境4.Rabbitmq 基础配置类 TtlQueueConfig5.建立netty服务器 rabbitmq消息生产者6.建立常规队列的消费者 Consumer7.建立死信队列的消费者 DeadLetterConsumer8.建立mapper.xml文件9.建立map…

Visual Studio导出动态库

1、创建新项目&#xff0c;选择如下 2、工程目录结构如下 3、编写pch.h文件&#xff0c;内容如下 // pch.h: 这是预编译标头文件。 // 下方列出的文件仅编译一次&#xff0c;提高了将来生成的生成性能。 // 这还将影响 IntelliSense 性能&#xff0c;包括代码完成和许多代码浏…

AI驱动TDSQL-C Serverless 数据库技术实战营-融合智能体与TDSQL-C技术,高效实现二手房数据查询与分析应用

文章目录 什么是TDSQL-C技术创新算力服务器与数据库服务器申请与部署购买 TDSQL-C Mysql Serverless 实例购买HAI高算力服务器 准备工作准备数据下载依赖 案例研发创建数据库写入数据智能体与TDSQL-C 的结合应用第一步配置llama3.1第二步代码开发运行应用测试应用 总结 什么是T…

戏曲多多 1.0.6.0 专为电视端设计的戏曲与生活内容APP,同样适用于安卓手机,方便老年人使用

戏曲多多是一款专为电视端设计的应用程序&#xff0c;也可安装在安卓手机上&#xff0c;特别适合不会使用手机的老年人。该应用包含戏曲、红歌、儿歌、老电影等丰富内容&#xff0c;非常适合老年人的观看喜好。此外&#xff0c;还有广场舞教学、养生太极教程&#xff08;包括太…

Qualitor processVariavel.php 未授权命令注入漏洞复现(CVE-2023-47253)

0x01 漏洞概述 Qualitor 8.20及之前版本存在命令注入漏洞,远程攻击者可利用该漏洞通过PHP代码执行任意代码。 0x02 复现环境 FOFA&#xff1a;app"Qualitor-Web" 0x03 漏洞复现 PoC GET /html/ad/adpesquisasql/request/processVariavel.php?gridValoresPopHi…

3 pyqt5 Layout布局(保证主界面缩放各组件也对应缩放)== 主要有Qt Designer和完全代码设置两种设计方式(根据自己情况选择即可)

文章目录 前言一、Layout的类别二、使用Qt Designer进行Layout布局三、完全使用代码进行Layout布局前言 本节我们的http测试的例子,只实现界面方面的逻辑,底层不用管。我们主要的目的是通过这个例子设计界面布局。 我们前面写的界面程序有个问题,如果你用鼠标拖拽主窗口边…

雷达系统中杂波信号的建模与仿真

雷达系统中杂波信号的建模与仿真 2 杂波建模与模拟方法 2.1 杂波建模 杂波可以说是雷达在所处环境中接收到的不感兴趣的回波[4]。就像目标回波一样&#xff0c;杂波也是极为复杂的。为了有效地克服杂波对信号检测的影响&#xff0c;需要知道杂波的幅度特性以及频谱特性。除独…

JavaScript爬虫:数据抓取的艺术与实践

在当今数据驱动的世界中&#xff0c;JavaScript作为一种广泛使用的编程语言&#xff0c;不仅在前端开发中占据重要地位&#xff0c;也可以用于编写爬虫程序&#xff0c;从互联网上抓取有价值的数据。本文将介绍如何使用JavaScript编写爬虫程序&#xff0c;并探讨其在数据抓取中…

Harmony next Native API 开发工程实践

旨在通过文档&#xff0c;了解华为native开发中的关键节点&#xff0c;能够搭建一个比较实用的native功能、 目录 前言 一、napi是什么&#xff1f; 二、简单开始一个napi的实例 1.适配架构配置 2.新增实现 3.官方实例 4.napi与ark通讯的几种方式 Native侧的CallNative Native …

从耐用到防水:全面综合评估SD卡的性能指标

SD卡&#xff08;Secure Digital Memory Card&#xff09;是一种广泛使用的存储器件&#xff0c;因其快速的数据传输速度、可热插拔的特性以及较大的存储容量&#xff0c;广泛应用于各种场景&#xff0c;例如在便携式设备如智能手机、平板电脑、运动相机等&#xff0c;用于存储…

Docker镜像、Spark支持多表...Apache SeaTunnel 2.3.8版本将带来的惊喜

Apache SeaTunnel 2.3.8版本即将于大家见面&#xff0c;近日&#xff0c;Apache SeaTunnel PMC Member 范佳在社区的交流会上为大家提前透露了关于这个新版本即将进行的功能与特性更新概况&#xff0c;详细内容如下&#xff1a; SeaTunnel 简介 SeaTunnel是一个高性能的开源分…

【生物服务器】DAP-seq与H3K4me3 ChIP-seq服务,推动表观遗传学研究的创新工具

查看全文>>>探索基因调控新维度&#xff1a;汇智生物的DAP-seq与H3K4me3 ChIP-seq服务&#xff0c;推动表观遗传学研究的创新工具与合作案例 北京汇智精研生物科技由毕业于中国科学院、北京大学肿瘤医院、中国农科院、中国农业大学等科研院所的国家高精尖人才发起&…

计算机网络--HTTP协议

1.TCP,UDP的对比图 TCP:面向连接的,可靠的,字节流服务; UDP:无连接的,不可靠的,数据报服务; 2.补充网络部分的其他知识点 1).复位报文段 在某些特殊条件下&#xff0c; TCP 连接的一端会向另一端发送携带 RST 标志的报文段&#xff0c;即复位报文段&#xff0c;已通知对方…

【通知】“长三角档案数字资源长期保存与数据安全治理”专题培训

关注我们 - 数字罗塞塔计划 - 为加强长三角地区档案数字资源长期安全管理&#xff0c;提升档案管理人员档案信息化水平和实务技能&#xff0c;推动长三角地区档案数字化转型向纵深发展&#xff0c;上海市档案服务和教育中心将于近期举办“长三角档案数字资源长期保存与数据安全…

【裸机装机系列】16.kali(ubuntu)-安装linux和win双系统-重装win11步骤

推荐阅读&#xff1a; 1.kali(ubuntu)-为什么弃用ubuntu&#xff0c;而选择基于debian的kali操作系统 注意&#xff1a; 要先装windows&#xff0c;再装linux&#xff0c;不然linux的启动分区会被覆盖掉。为什么双系统要先装windows呢&#xff1f; 在一个新硬盘上&#xff0…

旺店通ERP集成金蝶K3(金蝶K3主供应链)

源系统成集云目标系统 金蝶K3介绍 金蝶K3是一款ERP软件&#xff0c;它集成了供应链管理、财务管理、人力资源管理、客户关系管理、办公自动化、商业分析、移动商务、集成接口及行业插件等业务管理组件。以成本管理为目标&#xff0c;计划与流程控制为主线&#xff0c;通…

原生APP与其他类型APP的对比

移动应用主要分为原生APP、混合APP和Web APP三种。每种类型都有其独特的优势和局限性。 原生APP 优点&#xff1a;性能卓越&#xff1a; 直接调用设备硬件&#xff0c;运行流畅&#xff0c;用户体验最佳。用户界面定制化程度高&#xff1a; 可以充分利用平台的UI组件&#xff…

SD卡认识——SDIO协议入门与实践(一)

最初是三年前&#xff0c;接手开发sdio裸机驱动和测试用例的工作&#xff0c;内容很多&#xff0c;一开始就是各种在官网、各大论坛以及开源的驱动和例程里学习&#xff0c;简单浏览了sdio控制器、SD卡、MMC、SDIO卡等协议&#xff0c;然后就是开干&#xff1b;鉴于sdio协议还是…

Java GC:GC算法、GC回收器、GC日志

文章目录 基本概念垃圾回收类型垃圾回收算法垃圾回收器 VM参数设置控制vm参数内存参数GC参数 GC实例分析 基本概念 垃圾回收类型 Minor GC:对新生代进行的垃圾回收&#xff0c;所以也叫Young GCMajor GC:对老年代进行的垃圾回收&#xff0c;所以也叫Old GCFull GC:对整个Java…

无人机的作战指挥中心-地面站!

无人机与地面站的关系 指挥与控制&#xff1a;地面站是无人机系统的核心控制部分&#xff0c;负责对无人机进行远程指挥和控制。无人机根据地面站下达的任务自主完成飞行任务&#xff0c;并实时向地面站反馈飞行状态和任务执行情况。 任务规划与执行&#xff1a;地面站具备任…