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
}
}
相关推荐
程序员爱钓鱼17 分钟前
Go语言实战案例-项目实战篇:新闻聚合工具
后端·google·go
IT_陈寒18 分钟前
Python开发者必须掌握的12个高效数据处理技巧,用过都说香!
前端·人工智能·后端
一只叫煤球的猫9 小时前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
bobz9659 小时前
tcp/ip 中的多路复用
后端
bobz9659 小时前
tls ingress 简单记录
后端
皮皮林55110 小时前
IDEA 源码阅读利器,你居然还不会?
java·intellij idea
你的人类朋友10 小时前
什么是OpenSSL
后端·安全·程序员
bobz96511 小时前
mcp 直接操作浏览器
后端
前端小张同学13 小时前
服务器部署 gitlab 占用空间太大怎么办,优化思路。
后端
databook13 小时前
Manim实现闪光轨迹特效
后端·python·动效