记得加上@Component让写的东西可以被扫描为spring的组件
给实体类赋值的方法
1.可以在属性名上通过注解@Value直接赋值
2.通过yaml文件注入(注意空格的用法)
第二种方法必须使用@CongifurationProperties(prefix = "参数")来进行绑定才能生效
JSR303数据校验
Springboot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。我们这里来写个注解让我们的name只能支持Email格式;
@Component //注册bean
@ConfigurationProperties(prefix = "person")
@Validated //数据校验
public class Person {
@Email(message="邮箱格式错误") //name必须是邮箱格式
private String name;
}
message是自定义的
常见的参数
@NotNull(message="名字不能为空")
private String userName;
@Max(value=120,message="年龄最大不能查过120")
private int age;
@Email(message="邮箱格式错误")
private String email;
空检查
@Null 验证对象是否为null
@NotNull 验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty 检查约束元素是否为NULL或者是EMPTY.
Booelan检查
@AssertTrue 验证 Boolean 对象是否为 true
@AssertFalse 验证 Boolean 对象是否为 false
长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Length(min=, max=) string is between min and max included.
日期检查
@Past 验证 Date 和 Calendar 对象是否在当前时间之前
@Future 验证 Date 和 Calendar 对象是否在当前时间之后
@Pattern 验证 String 对象是否符合正则表达式的规则
多环境切换
yaml的多文档块
server:
port: 8081
#选择要激活那个环境块
spring:
profiles:
active: prod
---
server:
port: 8083
spring:
profiles: dev #配置环境的名称
---
server:
port: 8084
spring:
profiles: prod #配置环境的名称
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件:
优先级1:项目路径下的config文件夹配置文件
优先级2:项目路径下配置文件
优先级3:资源路径下的config文件夹配置文件
优先级4:资源路径下配置文件
存在优先级问题!需要注意!!!!!
Spring的静态资源映射规则
SpringBoot中,SpringMVC的web配置都在 WebMvcAutoConfiguration 这个配置类里面,里面有许多的配置方法
Thymeleaf 模板:
Thymeleaf的自动配置类:ThymeleafProperties
我们只需要把我们的html页面放在类路径下的templates下,thymeleaf就可以帮我们自动渲染了。
使用thymeleaf什么都不需要配置,只需要将他放在指定的文件夹下即可!
测试:
把html放在templates下
@Controller
public class IndexController {
private String test;
@RequestMapping("/test")
public String test(){
return test;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>测试成功</h1>
</body>
</html>
访问localhost:8080/test即可访问到html
Thymeleaf传值:
@Controller
public class IndexController {
private String test;
@RequestMapping("/test")
public String test(Model model){
model.addAttribute("msg","传值成功了");
return test;
}
}
这里要注意引入头文件,否则出错
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div th:text="${msg}"></div>
</body>
</html>
这里的${msg}可能会爆红,但不影响程序的正常运行。(设置里可以取消)
thymeleaf的其他用法:
@Controller
public class IndexController {
private String test;
@RequestMapping("/test")
public String test(Model model){
model.addAttribute("msg","<h1>传值成功了</h1>");
model.addAttribute("users", Arrays.asList("gao","jie","lin"));
return test;
}
}
记得加上头文件xmlns:th="http://www.thymeleaf.org"
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
//转义
<div th:text="${msg}"></div>
//不转义
<div th:utext="${msg}"></div>
<h3 th:each="user:${users}" th:text="${user}" ></h3>
</body>
</html>
可以进行转义或不转义,前面加u,也可以将传递的对象用循环打出来。
扩展MVC的配置方法