Springboot

回顾spring

优点:

不足:

1、配置重量级,大量的模板化配置,示例:

复制代码
<!-- 开启注解spring事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager"/>


<!--开启 springWeb 注解-->
<mvc:annotation-driven></mvc:annotation-driven>

2、需要我们自己添加框架或者项目需要的依赖jar,如果版本不匹配,会出现兼容问题

springboot

实在spring框架基础上对spring框架的搭建过程进行了封装,使得开发人员可以快速搭建起一个商业级的spring应用程序。

搭建过程简化体现

1、使用约定优于配置的思想,把很多开发中的默认的做法直接进行了简化(注解、事务...)

2、自动的将相关的依赖集成进来(基础性的、项目必须的)

springboot搭建过程

1、创建一个普通的maven项目,

2、在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>

3、创建基本包目录,在包下创建一个启动类

启动类示例,添加注解@SpringBootApplication扫描这个类下的所有包,包目录就是在这个类下。

package com.ffyc.news;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication//扫描这个类下的所有包
public class NewsApplication {
    public static void main(String[] args) {
        SpringApplication.run(NewsApplication.class);
    }
}

springboot集成web组件后,内置了Tomcat服务器,一个springboot应用相当于一个独立的服务,使用启动类的main方法启动springboot程序。

spring boot配置文件

spring boot使用一个全局的配置文件(配置文件名固定的,必须为application),用来存储项目用的各种参数配置。

配置文件名有俩种格式,一种是properties格式,另一种是yaml格式。

application.properties属于文件格式,内容是键值对形式,

properties的格式是叫为简单的

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

yml基本语法:

语法结构:空格key:空格value (空格不能省略),以此来表示键值对,以空格缩进的方式控制层级关系,只要左边对齐则说明是同一级关系。

spring boot数据访问管理

1、先导入数据源,在pom.xml中引入spring+jdbc依赖,因为为了连接引入数据库需要引入jdbc支持

复制代码
 <!--spring jdbc-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

2、在application.yml中进行数据源配置

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

3、spring boot整合阿里数据源

导入阿里源的jar、在application.xml中进行注册阿里数据库连接池,和password是同一级

复制代码
type: com.alibaba.druid.pool.DruidDataSource #指定数据库连接对象
initialSize: 5 #初始化时建立物理连接的个数
maxActive: 20 #最大连接池数量

spring boot集成mybatis

1、导入springboot+mybatis的依赖

复制代码
<!--spring+mybatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.4</version>
</dependency>

2、在application.xml中进行配置

# spring boot集成mybatis
mybatis:
  type-aliases-package: com.ffyc.news.model
  mapper-locations: classpath:mapper/*Mapper.xml
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3、在启动类上添加@MapperScan(接口所在的包的地址)

springboot集成日志功能

1、在application中进行配置,日志级别和日志文件路径

logging:
  level:
    com.ffyc.news: debug  日志级别
  file:
    name: E:/log/log.log  日志文件位置,不用自己创建,启动时会自动创建

2、在需要打印日志的类中创建Logger对象在类中使用

private static Logger logger = LoggerFactory.getLogger(当前类名.class);
//在需要的位置调用具体的日志级别方法输出

日志级别划分:debug<info<warn<error,在application.yml中配置的是debug,所以日志打印会将四个级别都打印出。(日志打印只会打印比自己高级别的类型,如果配置的是info则debug不会打印出来)

spring boot使用AOP统一打印日志

1、导入依赖jar

复制代码
<!--aop 日志打印-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2、在application.yml中进行配置

复制代码
logging:
  level:
    com.ffyc.news: debug
  file:
    name: E:/log/log.log

3、定义切面通知类

@Component
@Aspect
public class LogAspect {
private Logger logger = LoggerFactory.getLogger(LogAspect.class);
@Before("execution(public * com.ffyc.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
}
}
相关推荐
Ttang23几秒前
Tomcat原理(6)——tomcat完整实现
java·tomcat
goTsHgo2 分钟前
在 Spring Boot 的 MVC 框架中 路径匹配的实现 详解
spring boot·后端·mvc
钱多多_qdd12 分钟前
spring cache源码解析(四)——从@EnableCaching开始来阅读源码
java·spring boot·spring
waicsdn_haha14 分钟前
Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】
java·运维·服务器·开发语言·windows·后端·jdk
飞的肖22 分钟前
前端使用 Element Plus架构vue3.0实现图片拖拉拽,后等比压缩,上传到Spring Boot后端
前端·spring boot·架构
Q_192849990624 分钟前
基于Spring Boot的摄影器材租赁回收系统
java·spring boot·后端
Code_流苏26 分钟前
VSCode搭建Java开发环境 2024保姆级安装教程(Java环境搭建+VSCode安装+运行测试+背景图设置)
java·ide·vscode·搭建·java开发环境
良许Linux28 分钟前
0.96寸OLED显示屏详解
linux·服务器·后端·互联网
求知若饥40 分钟前
NestJS 项目实战-权限管理系统开发(六)
后端·node.js·nestjs
左羊1 小时前
【代码备忘录】复杂SQL写法案例(一)
后端