Java从坚持到精通-SpringBoot(持续更新ing)

目录

1.什么是SpringBoot?

2.如何快速创建一个SpringBoot的web项目?

3.springboot自动装配读取的文件是哪个?原理是什么?

4.yml的书写注意点以及配置优先级

5.springboot中的赋值操作

6.JSR303的使用

7.SpringBoot配置文件的存放目录

8.环境配置隔离

9.通过pom坐标导入静态资源方式

10.静态资源存放路径

11.如何自定义webmvc的配置类

12.引导类解析

13.配置文件未被识别时应该怎么加回去

14.yaml文件中变量的引用

15.SpringBoot整合MyBatis

16.SpringBoot整合MyBatisPlus

17.SpringBoot整合Druid

18.自定义全局异常拦截器

19.maven打包插件

20.命令行启动常见问题及解决方案

1.Windows端口被占用

21.Linux环境后台启动jar包

22.启动时设置临时属性

23.多环境分组管理

24.maven与SpringBoot多环境兼容

25.设置日志文件

26.原理篇

1.自动配置原理


1.什么是SpringBoot?

本质是通过“约定大于配置”对spring进一步的封装。

2.如何快速创建一个SpringBoot的web项目?

在创建springboot项目时勾选“Spring Web”,即可快速创建springboot的web项目。

如果前期未在这里勾选,也可以在pom文件中添加如下依赖:

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

然后新建一个类,输入如下代码:

@RestController
public class HelloWorld {

    @GetMapping("/sayHello")
    public String sayHello(){
        return "你好,世界";
    }

}

启动项目,我们能从启动日志上看到,我们的项目端口是8080,没有上下文路径,所以我们直接访问:http://localhost:8080/sayHello

能看到页面是直接返回,即成功。

这里我们看到默认启动端口是8080,怎么修改端口号呢,可以在application.properties里面修改端口号,添加

server.port=8088

即可修改项目的端口号,这就是“约定大于配置”的思想,不需要再写繁杂的xml配置文件,只要约定好在哪里需要写上什么就可以轻松修改。

3.springboot自动装配读取的文件是哪个?原理是什么?

自动装配读取的是META-INF包下的spring.factories文件里的内容,本质是结合是否存在类的注解,最后获取到类的全路径,然后再通过反射去创建对象。

4.yml的书写注意点以及配置优先级

配置文件可以写成yml或者yaml结尾得文件,使用的时候需要注意空格。如下是一个简单的例子:

如果项目中同时写了application.properties和application.yml,则application.properties中的同名属性会生效,也就是说application.properties的优先级更高。

5.springboot中的赋值操作

可以使用@ConfigurationProperties(prefix = "xxx")的注解实现,以下是一个自动赋值student对象的例子:

首先定义两个类,Dog和Student

@Data
public class Dog {
    private String name;
    private Integer age;
}

@Component
@ConfigurationProperties(prefix = "student")
@Data
public class Student {
    private String name;
    private Integer age;
    private Map<String, Object> maps;
    private List<Object> list;
    private Dog dog;
}

在application.yml文件中编写好对应的值

student:
  name: duolaimi
  age: 20
  maps: {k1: v1, k2: v2}
  list:
    - code
    - music
  dog:
    name: 旺财
    age: 3

最关键的是定义的类上加上了@ConfigurationProperties(prefix = "xxx")注解,并且prefix与yml定义的前面的值相同,如果都为student,即对应上了。

运行test文件,发现能自动赋值。

总结:需要配置多个值时,可以使用yml配置加上@ConfigurationProperties注解的方式,一次性赋值。

如果只是单个值赋值或者少量值赋值,则可以用@Value加上spel,如下所示

@Component
@Data
public class Dog {
    @Value("${dogname}")
    private String name;
    @Value("${dogage}")
    private Integer age;
}

这样也能正常赋值。

还能使用Environment接口,能将配置文件中的所有属性赋值到一个对象中,使用时加@Autowired,类似map,直接调用getProperty()方法传入要查的key即可。

6.JSR303的使用

什么是JSR303?简单来说,它是一个通过注解就能约束数据的工具

使用的话,只需在类上加上@Validated注解,然后在对应的属性上添加校验规则即可。比如:

@Component
@ConfigurationProperties(prefix = "student")
@Validated
@Data
public class Student {
    @NotNull(message = "学生姓名不能为空")
    private String name;
    private Integer age;
    private Map<String, Object> maps;
    private List<Object> list;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值