文章目录
前言
springboot集成了web开发中的所需要的各种其他框架,只需要在pom文件中引入相应的启动器依赖即可,所有的系统配置,都是通过配置类来完成的,只需要在配置文件中赋值即可,使用统一的slf4j日志进行打印,对于web开发,是不支持JSP的,而是采用了另外一种模板引擎thymeleaf
一、配置文件
1、系统配置文件
application.yaml/yml/properties,用于系统配置,上下文路径,端口号,等等
yaml:使用:空格 赋值,具有层级关系的采用使用空格,具有同一层级的空格相同
properties:=连接属性名和属性值
2、属性配置文件
1)简单使用
在配置类中加上@ConfigurationProperties(prefix = “person”)表明会在系统配置文件中使用person前缀的属性名进行属性注入,也可使用spring注解的value("${}")进行注入,再加上@PropertySource("")指定properties配置文件,这样就是通过属性配置文件注入
@Component
@PropertySource(value={"classpath:/person.properties"})
@ConfigurationProperties(prefix = "person")
public class Person {
//@Value("${person.userName}")
private String userName;
private Integer age;
//@Value("${person.birthday}")
private Date birthday;
private Address address;
private List list;
@Override
public String toString() {
return "Person{" +
"userName='" + userName + '\'' +
", age=" + age +
", birthday=" + birthday +
", address=" + address +
", list=" + list +
'}';
}
//属性配置文件
person.userName=黎洋
person.age=10000
person.address.province=${person.user:default}
person.address.city=${random.uuid}
value.usr=ly
value.pwd=123456
2)其他
1)JSR303数据校验:在类上加入validated注解,在属性加上对应的数据类型@email表示数据需要符合邮箱格式,configurationproperties是支持的(成功/失败)_,而vlaue不支持(总是成功)
2)在配置文件中支持使用 取 值 , 也 可 以 使 用 一 些 函 数 {}取值,也可以使用一些函数 取值,也可以使用一些函数{random.uuid},如果取其他属性值不存在,那么默认是default,如果是int类型,那么会出错
3)SpEl:configurationproperties不支持,age:#{4+3},不行的。value支持#{4+3},写入7
4)
3、profile文件
类似这样的命令application-profile.yaml/yml/properteis,为系统配置文件多个模块,需要在系统配置文件中启动才能起作用,特别的在yaml/yml内部可以使用—以---作为多个模块的划分,第一个模块是用来启动启动模块的,其他模块的声明是spring.profiles:[profiles]
server:
port: 8082
spring:
profiles:
active: ww #启动ww模块的配置
---
server:
servlet:
context-path: /ww
spring:
profiles: ww #声明当前模块的配置名称
4、系统配置文件加载位置及优先级
1)文件加载位置:
./config/,./,classpath:/config/,classpath:/,加载优先级由高到低,高优先级覆盖低优先级
2)文件优先级
yaml>yml>properties,高优先级覆盖低优先级
3)其他配置,
①可通过JVM参数进行配置,
②可以在打包好的jar包的同目录下,声明application-[profile]/application文件进行配置,这样的配置大于jar包里面的配置的,且application-[profile]>application
③可以在java -jar 命令中进行配置
java -jar epin.jar --server.port=5555
二、web静态资源文件
1、资源文件位置
1、默认加载路径classpath:/static/,classpath:/public/,classpath:/resource,classpath:/,classpath:/MET-INFO/resources/,
2、添加静态资源加载路径,获取图片
spring.mvc.static-path-pattern=/pic/**
spring.resources.static-locations=file:D:\\epin\\images
registry.addResourceHandler("/pic/**").addResourceLocations("file:D:\\epin\\images");
2、视图解析器
1)thymeleaf
如果想得到thymeleaf的模板引擎的支持,那么直接导入相应的依赖即可,默认返回的视图就是在thymeleaf下面,如果没有引入thymeleaf,需要我们自己定义返回的视图路径
2)JSP
加入相关的依赖,并且在IDEA中进行配置,修改视图解析器的路径
3)视图解析器
spring.mvc.view.prefix=classpath:/
spring.mvc.view.suffix=.html
3、自定义错误页面
三、日志
1、springboot中的日志管理
开发者使用Spring Boot框架时,就依赖了spring-boot-starter-logging,该依赖包为开发者的日志系统提供了一个抽象层接口
springboot默认使用slf4j的抽象类和logback实现类实现日志打印,如果仅导入slf4j是无法实现打印方法,还需要导入其他日志类实现具体的打印方法, 可能还需要导入设配器层的依赖,
如果其他框架中使用的日志打印是实现类不一样,可以在依赖exclusion标签去除掉日志类,使用springboot日志类替代就可以了,替换默认的框架也是如此。
可以在配置文件中设置打印级别和输出的文件路径
2、日志打印
默认的打印级别是info,也就是说前面的打印方法在执行时都是没有效果的
trace<debug<into<warn<error
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class DemoApplicationTests {
Logger logger = LoggerFactory.getLogger(getClass());
@Test
void contextLoads() {
logger.debug("debug");
logger.info("info");
logger.warn("warn");
logger.error("error\n");
}
}
四、集成mybatis
五、自动配置
@SpringBootApplication
@EnableAutoConfiguration
开启自动配置,扫描主启动类所在包及其子包下的所有的注解bean,在扫描configuration注解配置类时,这个注解上还有EnableConfigurationProperties注解,用来指定配置类属性条件,通过@condition注解可以用来判断是否决定启用这个配置
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
①导入一个class,创建对象
②导入一个configuration注解的对象,创建这个类中所有的@bean注解方法的对象
③导入一个实现接口的类,重写方法返回全限定名称的数据,并且创建这些对象。
从spring-boot-autoconfigure中的MET-INFO中的spring.factories中获取程序所需相应的全限定名称的配置类。