SpringBoot2

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 images

templates :保存所有的模板页面(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面),可以使用模板引擎(freemarker、thymeleaf);

application.properties :Spring Boot应用的配置文件;可以修改一些默认设置;
在这里插入图片描述

springBoot使用一个全局配置文件

  • application.properties
  • application.yml
YAML基本语法:
  1. key: value 表示一对键值对(冒号后面必须要有空格)
  2. 使用空格缩进表示层级关系
  3. 左侧缩进的空格数目不重要,只要同一层级的元素左侧对齐即可
  4. key 与 value 大小写敏感
  5. 字符串 默认不用加上引号;
    • “” 使用 双引号会转义特殊字符,特殊字符最终会转成本来想表示含义输出
      例如: 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:不保留引入时使用的标签, 将声明片段直接覆盖当前引用标签

错误页面友好配置

  1. 当发生错误时,先在templates/error 下找精准匹配的错误页面,如果没找到就找模糊匹配的错误页面(5**.xml)
  2. 如果在templates/error没有找到对应的错误页面,就去 static/error下找错误页面,同样也是先找精准匹配的错误页面,没找到再找模糊匹配的错误页面
  3. 如果 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在方法之后执行,出现异常则不会清除缓存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值