首页 > 其他分享 >SpringBoot

SpringBoot

时间:2023-11-15 20:24:03浏览次数:24  
标签:SpringBoot 配置文件 Spring 配置 application mybatis yml

一、简介

Spring Boot是Spring公司的一个顶级项目,和Spring Framework是一个级别的。

不需要编写xml配置文件,通过利用pring Framework 4 自动配置特性完成配置。

启动器

  就是引入相关的依赖,通过java配置的方式完成自动配置。

1. 特征

  1. 使用Spring Boot可以创建独立的Spring应用程序。

  2. 在Spring Boot中直接嵌入了Tomcat、Jetty、Undertow等Web 容器,所以在使用SpringBoot做Web开发时不需要部署WAR文件。

  3. 通过提供自己的启动器(Starter)依赖,简化项目构建配置。

  4. 尽量的自动配置Spring和第三方库。

  5. 绝对没有代码生成,也不需要XML配置文件。

2. 版本

  1. SNAPSHOT:快照版,即开发版。

  2. CURRENT:最新版,但是不一定是稳定版。

  3. GA:General Availability,正式发布的版本。

3. 核心

起步依赖

  起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。 简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。

自动配置

  Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定 Spring配置应该用哪个,不该用哪个。该过程是Spring自动完成的。

二、启动类

启动类就是SpringBoot应用的入口,基于mian方法运行的。

1. 新建启动类

 启动类在启动时会扫描同包或者子包下的注解,不能直接放在java文件夹中,必须在包中新建启动类。所以应该放在基础包下。

命名规范:xxxApplication

例:

@SpringBootApplication
public class Springboot01Application {
    public static void main(String[] args) {
        SpringApplication.run(Springboot01Application.class, args);
    }
}

2. 启动类与启动器区别

启动类是项目的入口,启动器表示jar包的坐标

三、resources目录结构

1. 目录结构

   static:存放静态资源(css、js、图片、静态html等)

  templates:存放模板引擎 (thymeleaf,FreeMarker等视图模板)

  application.properties:SpringBoot配置文件。也可以自定义config文件夹存放配置文件。

注意:

  static目录是SpringBoot可以直接识别的目录,会将其中的静态资源编译到web项目中,并放到tomcat中使用。静态资源的访问路径中无需声明static。例如: http://localhost:8080/a.png

  IDEA中经常出现放在static下的静态文件即使重启也不被编译。需要通过Maven面板进行清空缓存,重新编译启动即可识别。

四、SpringBoot配置文件

SpringBoot提供一个名为 application 的全局配置文件,支持properties和yml格式

1. properties格式

例:

#配置端口号
server.port=8888
#配置项目名:必须以'/'开头,不能以'/'结尾
server.servlet.context-path=/test

2. yml格式

YML格式配置文件的扩展名可以是yaml或者yml,非常适合用来做以数据为中心的配置文件。

2.1 格式要求

  1. 大小写敏感

  2. 使用缩进代表层级关系

  3. 缩进不允许使用tab,只允许空格

  4. 相同的部分只出现一次

  5. '#'表示注释

2.2 书写格式

  • 字面量:date、boolean、string、number、null

  • 对象:键值对。map、hash、javabean

  • 数组:array、list、queue、set

① 字面量

server:
   port: 8888

②对象

user1: {"id":10, "name":"admin"}
  user2:
    id: 20
    name: guest
  users2:
    - id: 1000
      name: users1000
    - id: 2000
      name: users2000
  map:
    k1:
      id: 19
      name: map1
    k2:
      id: 29
      name: map2

③数组

myparam:
  list1: v1,v2,v3
  list2:
    - v11
    - v12
    - v13
  array1: a1,a2,a3
  array2:
    - a11
    - a12
    - a13

3. 配置文件存放位置

  1. 当前项目根目录中

  2. 当前项目根目录下的一个/config子目录中

  3. 项目的resources即classpath类路径中

  4. 项目的resources即classpath类路径下的/config目录中

4. 配置文件加载顺序

可以有多个配置文件

4.2 不同位置的加载顺序

  1. config/application.properties

  2. config/application.yml

  3. application.properties

  4. application.yml

  5. resources/config/application.properties

  6. resources/config/application.yml

  7. resources/application.properties

  8. resources/application.yml

4.3 不同格式加载顺序

在同一个目录中的配置文件先加载properties格式 后加载yml格式的。

对于多个配置文件配置了同一个属性,最先配置的生效。

五、整合MyBatis

1. 依赖启动器

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

2. 配置文件

application.yml

# 数据源(数据库连接池) 配置
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
  # 加载mybatis配置文件(mybatis有特殊配置时使用)
  # config-location: classpath:mybatis/mybatis-config.xml  
  
  # 加载MyBatis的mapper.xml映射文件(映射接口和映射文件路径不一致时使用)
  # mapper-locations: classpath:mybatis/*.xml              
  
  type-aliases-package: com.xxx.pojo        # 实体类定义别名

3. 启动类

在启动类上使用@MapperScan注解表示扫描指定包中的mapper接口

不写@MapperScan时要在每个Mapper接口上加@Mapper注解

六、整合Druid

1. 启动器

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.11</version>
</dependency>

2. 配置文件

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useSSL=false&characterEncoding=utf8
    username: root
    password: root
    # 使用的连接池
    type: com.alibaba.druid.pool.DruidDataSource
     # 连接池的配置信息
    druid:
      # 初始化大小,最小,最大
      initial-size: 5
      max-active: 30
      min-idle: 5
      # 配置获取连接等待超时的时间
      max-wait: 60000
      validation-query: SELECT 1 FROM DUAL
      #配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      test-while-idle: true
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filters: stat,wall,slf4j
      # 配置DruidStatViewServlet
      stat-view-servlet:
        # 登录名
        login-username: admin
        # 登录密码
        login-password: admin
        url-pattern: /druid/*
        # IP白名单(没有配置或者为空,则允许所有访问)
        allow: 192.167.10.1,127.0.0.1
        reset-enable: false
        # 必须启用,要不会404
        enabled: true
mybatis:
  # 起别名
  type-aliases-package: com.xxx.pojo
  # 扫描映射文件
  # mapper-locations: classpath:mybatis/*.xml 
application.yml

七、整合Junit

1. 添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
</dependency>

2. 新建测试类

测试类需要有启动类的支持,

在test中与启动器相同的包路径下新建测试类,或者添加 @SpringBootTest (classes={启动器类名.class})

注意:

  1. 测试类不能叫做Test

  2. 测试方法返回值必须是void

  3. 测试方法必须没有参数

@SpringBootTest
public class MyTest {
    @Autowired
    UserMapper userMapper;
    @Test
    public void test(){
        User user = userMapper.selectById(1L);
    }
} 

在springBoot2.4之前使用整合单元测试需要写 @SpringBootTest (classes={启动器类名.class})和RunWith(SpringRunner.class)

八、整合PageHelper

Spring Boot整合PageHelper不需要做任何配置文件的配置,添加依赖后就可以直接使用。

1. 添加依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.2</version>
</dependency>

2. 直接使用

@Service
@Transactional
public class UserServiceImpl implements UserService{
    @Autowired
    private UserMapper userMapper;
    public PageInfo<User> queryByPage(int pageNumber, int pageSize){
        // pageNumber当前页码   pageSize每页显示的条数
        PageHelper.startPage(pageNumber,pageSize);
        
        // 查询全部,查询方法必须是查询多行结果,且没有分页语法。否则无法在sql后面拼接limit子句。
        List<User> users = userMapper.selectAll();
        
        // PageInfo是分页查询所有查询结果封装的类,所有的结果都从这个类取
        PageInfo<User> pageInfo = new PageInfo<>(users);
        return pageInfo;
    }
}
UserServiceImpl.java

PageHelper.startPage()要写在查询数据库代码之上。

底层拦截MyBatis的执行器根据传入的pageNum和pageSize进行sql的改造:查询总条数、动态拼接limit进行分页查询

九、整合logback

Logback是由log4j创始人设计的一个开源日志组件。

Spring Boot默认使用Logback组件作为日志管理。

在Spring Boot项目中我们不需要额外的添加Logback的依赖,因为在spring-boot-starter或者spring-boot-starter-web中已经包含了Logback的依赖。

1. Logback读取配置文件的步骤

  1. 在classpath下查找文件logback-test.xml

  2. 如果文件不存在,则在classpath下查找logback.xml

2. 使用默认的logback.xml

logging:
  level:
    # 根日志级别
    root: warn
    # 具体包日志级别
    com.xxx.mapper: debug
  file:
    name: mylogs/my.log

3. 自定义logback

<?xml version="1.0" encoding="UTF-8" ?>
 <configuration>
    <!--定义日志文件的存储地址-->  
    <property name="LOG_HOME" value="logs/" />  
     
    <!-- 控制台输出 -->   
    <appender name="Stdout" class="ch.qos.logback.core.ConsoleAppender">
       <!-- 日志输出编码 -->  
        <layout class="ch.qos.logback.classic.PatternLayout">   
             <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>   
        </layout>   
    </appender>   
     
    <!-- 按照每天生成日志文件 -->   
    <appender name="RollingFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">   
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/server.%d{yyyy-MM-dd}.log</FileNamePattern>   
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>   
        <layout class="ch.qos.logback.classic.PatternLayout">  
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>   
       </layout> 
        <!--日志文件最大的大小-->
       <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
         <MaxFileSize>10MB</MaxFileSize>
       </triggeringPolicy>
    </appender>     

    <!-- 日志输出级别 -->
    <root level="info">   
        <appender-ref ref="Stdout" />   
        <appender-ref ref="RollingFile" />   
    </root>

    <logger name="com.xxx.mapper" level="Trace"></logger>
</configuration>
logback.xml

 

标签:SpringBoot,配置文件,Spring,配置,application,mybatis,yml
From: https://www.cnblogs.com/giaogiaoyang/p/17834567.html

相关文章

  • day130-springboot的各种配置与应用
    编写springboot应用看官方文档DevelopingwithSpringBoot查看场景依赖,引入对应自动配置的场景,编写配置文件中debug=true开启自动配置报告。Negative(不生效)Positive(生效)Lombok的应用Lombok用标签方式代替构造器、getter/setter、toString()等鸡肋代码。引入依赖......
  • SpringBoot模拟插入1000000万条数据
    一、数据库表准备CREATETABLE`student`(`id`bigintNOTNULLCOMMENT'用户id',`name`varchar(50)COLLATEutf8mb4_general_ciDEFAULTNULLCOMMENT'姓名',`address`varchar(250)COLLATEutf8mb4_general_ciDEFAULTNULLCOMMENT'地址'......
  • springboot~ConfigurableListableBeanFactory和ApplicationContext的使用场景
    在工具类中封装getBean,使用哪个接口来实现实事上,在工具类中,实现BeanFactoryPostProcessor和ApplicationContextAware接口后,使用它们构造方法里的对象ConfigurableListableBeanFactory和ApplicationContext都可以很方便的获取spring容器里的bean,而在实际应用时,还有有些不同的,比如在......
  • SpringBoot 配置文件内容加密
    1.引入pom<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version>......
  • SpringBoot和mybatisPlus得核心知识点
    SpringBoot自动配置(Auto-Configuration):SpringBoot核心特性之一是自动配置。它尝试根据项目的依赖和内容推断应用程序应该如何配置。这简化了开发人员的工作,因为他们无需手动配置大量的设置。起步依赖(StarterDependencies):SpringBoot提供了一系列预配置的依赖项,称为“起......
  • SpringBoot整合数据可视化大屏使用
    整合数据可视化大屏是现代化应用程序中的一个重要组成部分,它可以帮助我们更直观地展示和理解大量的数据。在SpringBoot框架中,我们可以使用一些优秀的前端数据可视化库来实现数据可视化大屏,例如ECharts、Highcharts等。本文将详细介绍如何在SpringBoot中整合数据可视化大屏。1......
  • 使用Winsw部署springboot项目
    原文地址:https://blog.csdn.net/weixin_43862767/article/details/120725943使用Winsw部署springboot项目文章目录使用Winsw部署springboot项目前言一、WinSW是什么?二、WinSW下载及使用1.下载2.使用XML配置安装服务后续部署前言之前工作项目部署环境都是使用的Windows服务器,但是w......
  • springboot
    pom.xml文件<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"> &l......
  • Spring,SpringMVC,SpringBoot中注解讲解
    目录1Spring和SpringMVC注解1.1SpringMVC注解[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@ExceptionHandler1.1.11@ResponseS......
  • springboot 注解学习之——@SpringBootApplication
    springboot注解学习之——@SpringBootApplicationspringboot版本3.1.5@Inherited//不认识的注解,顺便学习,字面意思:继承@SpringBootConfiguration//字面意思:SpringBoot配置@EnableAutoConfiguration//字面意思:可以自动配置@Inherited它是一个元注解(就是用来声明注解......