SpringBoot

SpringBoot

1.概念和介绍

Spring用于简化Java程序的开发,而SpringBoot为了简化Spring程序开发。SpringBoot是Spring脚手架。可以快速完成Java程序的创建、提高开发效率等。

SpringBoot的优点:

  1. 快速集成框架,提供启动依赖的功能,可以集成各种框架。
  2. 内置了运行容器、无需配置Tomcat等Web容器,直接运行和部署程序。
  3. 可以不使用xml,使用注解和配置的方式进行开发。
  4. 支持更多的监控指标,可以更好的了解项目的运行情况。

创建SpringBoot项目(支持在网页上创建):IDEA社区版(2021.2.3+)在创建SpringBoot之前要安装Spring Boot Helper 插件,否则没有Spring lnitializr选项。
SpringBoot_第1张图片

SpringBoot项目结构:

SpringBoot_第2张图片

注意:SpringBoot项目约定大于配置,不需要配置bean扫描路径,但是需要遵守其规则,例如在demo同级目录下配置Bean类,但是SpringBoot项目不会去扫码该路径,只有和DemoApplication同级目录才会去扫描。

2.配置

配置主要是将程序运行时需要的一些数据信息,放入在配置文件中。

  1. 数据库的连接信息(用户名或密码)
  2. 项目的启动端口
  3. 配置日志级别

配置文件的种类:properties和yml。

properties和yml的区别:它们可以共存,当两个不同类型的配置文件同时存在时且配置了相同的配置项时,properties的优先级更高,以propertees为准。

注意:一般不会在一个项目中使用不同的配置文件格式。

配置文件内容分类:Spring Boot内置的配置项目和用户自定义配置项。

2.1properties配置文件

#配置启动绑定的端口号
server.port=8081
#配置数据库连接链接
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/database?characterEncoding=utf8
#配置连接数据库的用户
spring.datasource.username=root
#配置连接数据的密码
spring.datasource.password=123456
#自定义配置项
key1=hello

优点:

  1. 写法简单,不易出错。

缺点:

  1. 写法冗余,不够简便和灵活

2.1yml配置文件IDEAA

语法格式(一级目录):key: value

多级目录:相对于上一级偏移两个空格。

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/database?characterEncoding=utf8
    username: root
    password: 123456
key1: hello

优点:

  1. 写法简单、可读性高。
  2. yml支持更多的数据类型,可以简易表达清单、对象、列表等数据形式。
  3. 支持更高的编程语言。如Java、Golang、PHP、Python等等。

当设置value值时,如果值使用双引号进行包裹,如果里面的内容包含转义字符,转义字符能够正常发挥作用。

yml配置其他类型的数据:

  1. 配置对象(属性通过setter方法进行赋值,没有setter方法会报错)

    yml写法1:
    student:
      id: 10
      age: 20
      name: tom
    yml写法2:
    student: {id: 10, age: 20, name: tom}
    
    //从配置文件中读取对象并赋值到一个bean上
    @Data
    @Component
    @ConfigurationProperties(prefix = "student")
    public class Student {
        private int age;
        private Integer id;
        private String name;
    }
    
    
  2. 配置list集合:

    写法1:
    lists:
      list1:
        - A
        - B
        - C
        - D
    写法2:
    lists: {list1: [A,B,C,D]}
    @Data
    @Component
    @ConfigurationProperties(prefix = "lists")
    public class MyList1 {
        private List list1;
    }
    
    

关于配置文件中文乱码问题:通过设置当前项目和新项目的编码格式。settings->encoding。旧版本IDEA修改了编码格式,以前的乱码不会被恢复,新版本可以。

2.3读取配置文件信息

读取配置文件的信息使用@Value(“${key}”)注解,自定义和内置的配置项都能够读取到。

@RestController
public class TestController {
    @Value("${key1}")
    private String key;

    @RequestMapping("/hi")
    public String sayHi(){
        return "HI"+key;
    }
}

spring boot更多的系统配置项:https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html

2.5设置不同运行环境的配置文件

多运行环境配置:

  1. application-dev.yml(开发环境使用的配置文件)
  2. application-test.yml(测试环境使用的配置文件)
  3. application-produce.yml(生产环境使用的配置文件)

dev和test/produce标识可以进行改变,但是其他地方不能改变。

通过application.yml中配置使用哪一个配置文件:

spring:
 profiles:
   active: test

3.日志

日志在程序中不可或缺,非常重要,主要目的是方便程序员定位问题和解决问题。

日志级别:在不同的运行环境,记录不同程度的问题和信息。比如在开发阶段,需要输出的日志比较多,方便我们进行调试程序和查看问题;在生产环境需要输出的日志较少,排除不必要的日志信息,节约系统资源,提高应用程序的性能;

3.1输出自定义日志信息

//获取日志对象(使用spring boot内置的日志框架Slf4j)
private static Logger log = LoggerFactory.getLogger(TestController.class);
//使用日志对象提供的方法进行日志打印,默认级别是info
log.trace("trace...");//微量级别最低
log.debug("dubug...");//调试级别
log.info("info...");//普通打印信息,默认级别
log.warn("warn...");//警告级别
log.error("error...");//错误级别

不同的日志框架,实际的实现都不尽相同,日志门面(logging facade)是一种用于封装和统一处理不同底层日志库的接口和工具。

3.2设置日志级别筛选日志内容

3.3将日志持久化

将日志写入到文件。写入日志是以追加的方式,日志文件过大会自动分割。

输出方式1:

#配置日志的名称/设置日志的保存路径
logging:
  file:
    name: demo.log

输出方式2:

logging:
  file:
    path: D:\gitee\java\springboot-demo

日志级别设置:控制输出日志的内容

#设置根日志/自定义的日志级别
logging:
  level:
    root: info
    com:
      example:
        demo: trace

可以使用lombok框架,给类添加@Slf4j,简化开发。

4.Lombok

在编译时期,动态将注解转化为对应的代码。

lombok常用注解:

注解 作用
@Getter 自动添加getter方法
@Setter 自动添加setter方法
@ToString 自动添加toString方法
@EqualsAndHashCode 自动生成equals和hashCode方法
@NoArgsConstructor 自动添加无参构造
@AllArgsConstructor 自动添加所有属性的构造方法
@NonNull 属性不能为NULL
@RequierdArgsConstructor 自动添加必要的属性和构造方法final修饰+@NonNull的属性是必需的。
@Data @Getter + @Setter + @ToString +@EqualsAndHashCode+@RequiredArgsConstructor+@NoArgsConstructor
@Slf4j 添加⼀个名为 log 的⽇志对象。

3.热部署

  1. 添加热部署框架支持

    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-devtoolsartifactId>
        <scope>runtimescope>
        <optional>trueoptional>
    dependency>
    
  2. Settings开启自动编译(配置当前项目和新项目自动编译)SpringBoot_第3张图片3. 开启运行中热部署(新版本配置)SpringBoot_第4张图片

你可能感兴趣的:(Spring,spring,boot,数据库,后端)