SpringBoot中的常用注解:
@RunWith(SpringRunner.class):运行器在使用 spring-test 的过程中,有两个 runner 可以选择,分别是 SpringRunner 和 SpringJUnit4ClassRunner。如果是在 4.3 之前,只能选择 SpringJUnit4ClassRunner,如果是 4.3 之后,建议选择 SpringRunner。SpringRunner 对 junit 的版本有要求,需要 4.12 及以上。
@RunWith(JUnit4.class)就是指用JUnit4来运行
@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境
@RunWith(Suite.class)的话就是一套测试集合
@SpringBootTest:注解进行单元测试
@PropertySource({“classpath:application.properties”}):
@ImportResource:加载xml配置文件
eg:
@ImportResource(locations = {"classpath:sprirng-config.xml"})
@Validated:进行数据校验的注解
加载指定的属性文件(*.properties)到 Spring 的 Environment 中。可以配合 @Value 和@ConfigurationProperties 使用。
@PropertySource 和 @Value组合使用,可以将自定义属性文件中的属性变量值注入到当前类的使用@Value注解的成员变量中。
@PropertySource 和 @ConfigurationProperties组合使用,可以将属性文件与一个Java类绑定,将属性文件中的变量值注入到该Java类的成员变量中。
resources 文件夹中目录结构:
static :保存所有的静态资文件, js css imagestemplates :保存所有的模板页面(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面),可以使用模板引擎(freemarker、thymeleaf);
application.properties :Spring Boot应用的配置文件;可以修改一些默认设置;
springBoot使用一个全局配置文件
- application.properties
- application.yml
YAML基本语法:
- key: value 表示一对键值对(冒号后面必须要有空格)
- 使用空格缩进表示层级关系
- 左侧缩进的空格数目不重要,只要同一层级的元素左侧对齐即可
- key 与 value 大小写敏感
- 字符串 默认不用加上引号;
- “” 使用 双引号会转义特殊字符,特殊字符最终会转成本来想表示含义输出
例如: name: “shenmoumou \n jiangshi” 输出: shenmoumou 换行 jiangshi - ‘’ 使用 单引号不会转义特殊字符,特殊字符当作一个普通的字符串输出
例如: name: ‘shenmoumou \n jiangshi’ 输出: shenmoumou \n jiangshi
- “” 使用 双引号会转义特殊字符,特殊字符最终会转成本来想表示含义输出
配置文件的加载位置(级别由高到低):
- 当前项目的config目录下
- 当前项目的根目录下
- resources目录下的config目录下
- resources目录
若四个位置都配置了,则不同的配置会进行补充,相同的配置会发生覆盖,级别高的后加载,覆盖先加载的
日志级别:
由低到高:trace < debug < info < warn < error
Spring Boot默认设定的是 info 级别日志,(日志默认级别也称为root级别)。
可修改默认级别日志:logging.level.root|包=级别名
可以进行调整日志级别,设定某个级别后,就只打印设定的这个级别及后面高级别的日志信息
静态资源映射
ResourceProperties 根据请求查找资源文件, 从以下 四个路径 中 查找( 静态资源目录 ): classpath:/META-INF/resources/ classpath:/resources/ classpath:/static/ classpath:/public/Thymeleaf常用属性
-
th:insert
-
th:replace引入片段
-
th:fragment声明组合使用; 类似于 jsp:include
-
th:each遍历 , 类似于 c:forEach
-
th:if
当表达式的值不为空(null)时
如果表达式的值是一个布尔类型,且值为true评估为真,否则为假
如果表达式的值是一个数字类型,0为假,非0为真
如果表达式的值是一个字符串类型,只要值是"false"、“off”、"no"评估为假,否则为真
如果表达式的值不是一个布尔、数字、字符或字符串评估为真
当表达式的值为空(null)时,评估结果为假,对象不为null就为真 -
th:unless 与if刚好相反
-
th:object 直接取出对象
-
th:with声明变量, 类似于 c:set
-
th:attrprepend
th:attrappend修改任意属性, prepend前面追加, append后面追加 -
th:src …修改任意html原生属性值
-
th:text :在标签中展示表达式的结果
-
th:utext修改标签体中的内容
属性th:utext与th:text的区别在于:
th:text如果字符串里面有html标签当成普通字符串
th:utext如果字符串里面有html会去解析html标签
- th:fragment声明片段
- th:remove移除片段
th:insert 和 th:replace的区别
th:insert和th:replace都可以引入片段,两者的区别在于
th:insert: 保留引入时使用的标签
th:replace:不保留引入时使用的标签, 将声明片段直接覆盖当前引用标签
错误页面友好配置
- 当发生错误时,先在templates/error 下找精准匹配的错误页面,如果没找到就找模糊匹配的错误页面(5**.xml)
- 如果在templates/error没有找到对应的错误页面,就去 static/error下找错误页面,同样也是先找精准匹配的错误页面,没找到再找模糊匹配的错误页面
- 如果 templates 和 static 下都没找到错误页面,那就使用SpringBoot的默认错误页面。
- 可在错误页面上获取一些错误信息:
timestamp:时间戳
status:错误状态码
error:错误提示
exception:异常对象
message:异常消息
errors:JSR303数据校验出现的错误
注:如果不想在异常页面获取错误信息,我们就错误页面放到 static/error 目录下
如果要在页面上获取错误信息,那就只能把错误页面放在templates/error 目录下
springboot整合缓存
加入依赖:<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
在启动类上加
@EnableCaching
-
@Cacheable : 标在方法上,返回的结果会进行缓存(先查缓存中的结果,没有则调用方法并将结果放到缓存中) eg:查
注解属性:
value/cacheNames: 缓存的名字
key : 作为缓存中的Key值,不指定就是参数值,当然可以自已使用 SpEL表达式指定, 缓存结果是方法返回值 -
@CachePut:保证方法被调用后,又将对应缓存中的数据更新(先调用方法,调完方法再将结果放到缓存) eg:改
注:需要指定key的属性 -
@CacheEvict :注解用来清除缓存(当删除数据库的数据时,缓存中也删除)
注解属性:key:指要清除的数据,如 key=“#id”
allEntries =true : 指定清除这个缓存中所有数据。
beforeInvocation = true : true在方法之前执行;默认false在方法之后执行,出现异常则不会清除缓存