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

 更新时间:2025年03月31日 09:09:24   作者:yyyyyyykk  
这篇文章主要介绍了如何对spring框架的搭建进行封装--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;
   }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中for循环的执行过程分析

    Java中for循环的执行过程分析

    这篇文章主要介绍了Java中for循环的执行过程,实例分析了for循环的执行原理与顺序,对于深入理解Java具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • Java 中的Map遍历并删除的几种方法对比分析

    Java 中的Map遍历并删除的几种方法对比分析

    在Java中,遍历并删除Map中的元素有几种常见的方法,每种方法都有其适用场景和优缺点,下面给大家分享Java 中的Map遍历并删除的几种方法对比分析,感兴趣的朋友一起看看吧
    2025-06-06
  • SpringBoot SSE服务端主动推送事件的实现

    SpringBoot SSE服务端主动推送事件的实现

    本文主要介绍了SpringBoot SSE服务端主动推送事件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Java 中实现异步的多种方式

    Java 中实现异步的多种方式

    文章介绍了Java中实现异步处理的几种常见方式,每种方式都有其特点和适用场景,通过选择合适的异步处理方式,可以提高程序的性能和可维护性,感兴趣的朋友一起看看吧
    2025-03-03
  • Spring Native实现0.059s启动一个SpringBoot项目

    Spring Native实现0.059s启动一个SpringBoot项目

    Spring Native是Spring框架的一个子项目,旨在提供一种将Spring应用程序编译为本地可执行文件的方法,从而提高启动时间和资源效率,本文主要介绍了Spring Native实现0.059s启动一个SpringBoot项目,感兴趣的可以了解一下
    2024-02-02
  • java计算百分比值的方法

    java计算百分比值的方法

    这篇文章主要介绍了java计算百分比值的方法,涉及java数值运算的技巧,需要的朋友可以参考下
    2015-03-03
  • Java同学找工作最懵圈的问题:到底啥是分布式系统开发经验?(推荐)

    Java同学找工作最懵圈的问题:到底啥是分布式系统开发经验?(推荐)

    这篇文章主要介绍了分布式系统开发经验,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • SpringBoot整合Apache Spark实现一个简单的数据分析功能

    SpringBoot整合Apache Spark实现一个简单的数据分析功能

    ApacheSpark是一个开源的大数据处理框架,它提供了丰富的功能和API,用于分布式数据处理、数据分析和机器学习等任务,下面我们就来看看SpringBoot如何整合Apache Spark实现一个简单的数据分析功能吧
    2025-11-11
  • spring-Kafka中的@KafkaListener深入源码解读

    spring-Kafka中的@KafkaListener深入源码解读

    本文主要通过深入了解源码,梳理从spring启动到真正监听kafka消息的这套流程,从spring启动开始处理@KafkaListener,本文结合实例流程图给大家讲解的非常详细,需要的朋友参考下
    2023-02-02
  • java项目中的绝对路径和相对路径用法说明

    java项目中的绝对路径和相对路径用法说明

    这篇文章主要介绍了java项目中的绝对路径和相对路径用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08

最新评论