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
}
}
相关推荐
XiaoLeisj33 分钟前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck34 分钟前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
dayouziei34 分钟前
java的类加载机制的学习
java·学习
码农小旋风2 小时前
详解K8S--声明式API
后端
Peter_chq2 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
Yaml43 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~3 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616883 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
aloha_7893 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
记录成长java4 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet