Spring Boot

Spring Boot 的创建起因

spring 能简化开发效率,但还不完善。
优点:

  1. 开源
  2. 轻量级
  3. 一站式框架
  4. 控制反转(IOC),依赖注入(DI)依赖注入(DI)降低了组件之间的耦合性,实现了软件各层之间的解耦
  5. 面向切面(AOP),利用它可以很容易实现一些拦截,如事务控制等
  6. spring 对于主流的应用框架提供了很好的支持,例如 mybatis。
  7. spring 提供有自己的 mvc 实现。

缺点:

  1. spring 的组件代码是轻量级的,但它的 配置却是重量级。虽然 spring
    引入了 注解功能,但是仍然需要编写 大量的模板化配置文件

  2. 依赖管理也是一件耗时耗力的事情,在环境搭建时,需要分析要导入大量库的坐标,而且还需要分析导入与之有依赖关,一旦选错依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。

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

Spring Boot 简介

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

Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速开发新一代基于 Spring 框架的应用程序。
它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具

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

springBoot 的核心功能

  1. 起步依赖
    起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。
  2. 自动配置
    Spring Boot 的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定 Spring 配置应该用哪个,不该用哪个。该过程是 Spring 自动完成的。

SpringBoot 搭建

  1. 创建maven项目,或者创建Spring Initializr项目(缺点:jdk选择受到限制目前只有17,21,22,并且创建速度较慢)。

  2. 导入依赖


  <!--依赖的父级工程-->
    <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 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    <!--导入打包插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.6.6</version>
            </plugin>
        </plugins>
    </build>

  1. 创建 Application 启动类

创建位置与项目功能包 平级位置。
Springboot 集成 web 组件后,内置了 tomcat 服务器,一个 springboot 应用相当于一个独立的服务,可以使用启动类中的 main 方法启动 springboot 程序

@SpringBootApplication
public class NewsApplication {
    public static void main(String[] args) {
        SpringApplication.run(NewsApplication.class);
    }
}
  1. 修改端口号
    在resources包下创建名为 application.properties 文件(名字不能变), server.port 可修改启动端口
server.port=8088
  1. 修改启动图

可在 https://www.bootschool.net/ascii-art 中寻找艺术图
复制在resources包下创建的名为 banner.txt 文件中 (名字不能变)

Spring Boot中配置参数

配置文件有两种格式

键=值 形式的properties文件

server.port=8088

spring.datasource.driver-class-name=
spring.datasource.url=
spring.datasource.username=
spring.activemq.password=

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

Spring Boot 配置集成mybatis

需要集成四个依赖

  1. boot支持jdbc依赖
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
  1. mysql
      <!--mysql-->
 <dependency>                                       
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.16</version>
 </dependency>
  1. 阿里巴巴数据源
<!-- 阿里数据源 -->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.1.10</version>
</dependency>
  1. boot支持 mybatis 依赖
        <!--  mybatis依赖      -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>
  1. yml文件整合阿里巴巴数据源,并配置 mybatis
spring:
  datasource:       #
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/ssmdb?serverTimezone=Asia/Shanghai
    password: root
    username: root
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5 #初始化时建立物理连接的个数
    maxActive: 20 #最大连接池数量

mybatis:
  type-aliases-package: com.ffyc.news.model       #导入实体类
  mapper-locations: classpath:mappers/*Mapper.xml   #classpath:放Mapper文件夹名/*Mapper.xml
  configuration:  #    mybatis 全局设置
    map-underscore-to-camel-case: true   # 驼峰名映射
    cache-enabled: true                 # 二级缓存
  1. 启动类上读取 dao 包中的接口
@SpringBootApplication
@MapperScan("com.ffyc.news.dao")
public class NewsApplication{
...
}

即可集成mybatis,利用 mybatis 和 spring 知识可验证是否集成成功。

Spring Boot 集成日志功能

日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源,尤其是在生产环境中运行的程序更加重要。

常用日志组件
slf4j(Simple Logging Facade for Java)
commons-logging
Log4J
Log4J2
Logback
JUL(Java Utils Logging

springboot 中对这些组件都提供了支持,slf4j 和 commons-logging 是日志的门面接口,它们都不是具体的日志框架,你可以指定其他主流的日志实现框架。一般首选强烈推荐使用slf4j + logback.

AOP统一打印日志 依赖

   <!--  SpringBoot 使用 AOP 统一打印日志-->
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>

日志的级别划分:debug < info < warn < error

{} 是占位符,值由之后的参数传入

logger.debug("user account:{},user password:{}", user.getAccount(),user.getPassword());

logger.info("user account:{},user password:{}", user.getAccount(),user.getPassword());

logger.warn("user account:{},user password:{}", user.getAccount(),user.getPassword());

logger.error("user account:{},user password:{}", user.getAccount(),user.getPassword());
private Logger logger = LoggerFactory.getLogger(LogAspect.class);

  @Before("execution(public * com.news.web..*.*(..))")
  public void savelog(JoinPoint joinPoint) {
  
  ServletRequestAttributes attributes =(ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
  
  HttpServletRequest request = attributes.getRequest();
   //Object[] objs = joinPoint.getArgs();获取方法参数
   // 记录下请求内容
  logger.info("HTTP_METHOD :{} ", request.getMethod());
  
  logger.info("IP : {}", request.getRemoteAddr());//客户端 ip

  Object[] objs=joinPoint.getArgs();

  logger.info(Arrays.toString(objs))
}

Spring Boot 统一异常处理

全局异常捕获与处理

当请求出现异常会逐步上抛,直到 Controller 抛给框架,这不符合开发的统一返回规定。所以可以使用全局异常处理器来代替框架接收异常。

在这里插入图片描述

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

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

SpringBoot 集成 Swagger

Spring Boot 定时任务

注释

@Configuration

添加在类上表明是个 配置类

@Bean

用在方法上,返回一个交给spring管理的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩然缭绕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值