Spring Boot学习总结二 thymeleaf使用详解 1,变量表达式 2,选择(星号)表达式 3,文字国际化表达式 4,URL表达式 变量表达式和星号表达有什么区别吗? 内嵌变量

Redis是目前业界使用最广泛的内存数据存储。相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化。除此之外,Redis还提供一些类数据库的特性,比如事务,HA,主从库。可以说Redis兼具了缓存系统和数据库的一些特性,因此有着丰富的应用场景。本文介绍Redis在Spring Boot中两个典型的应用场景,cache的配置类:

@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {

	@Value("${spring.redis.host}")
	private String host;

	@Value("${spring.redis.port}")
	private int port;

	@Value("${spring.redis.timeout}")
	private int timeout;

	@Value("${spring.redis.pool.max-idle}")
	private int maxIdle;

	@Value("${spring.redis.pool.max-wait}")
	private long maxWaitMillis;

	@Value("${spring.redis.password}")
	private String password;

	@Bean
	public JedisPool redisPoolFactory() {

		JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();

		jedisPoolConfig.setMaxTotal(8);
		jedisPoolConfig.setMaxIdle(8);
		jedisPoolConfig.setMinIdle(0);// 设置最小空闲数
		jedisPoolConfig.setMaxWaitMillis(-1);
		jedisPoolConfig.setTestOnBorrow(true);
		jedisPoolConfig.setTestOnReturn(true);
		// Idle时进行连接扫描
		jedisPoolConfig.setTestWhileIdle(true);

		// 表示idle object evitor两次扫描之间要sleep的毫秒数
		jedisPoolConfig.setTimeBetweenEvictionRunsMillis(30000);

		// 表示idle object evitor每次扫描的最多的对象数
		jedisPoolConfig.setNumTestsPerEvictionRun(10);

		// 表示一个对象至少停留在idle状态的最短时间,然后才能被idle object
		// evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义
		jedisPoolConfig.setMinEvictableIdleTimeMillis(60000);

		JedisPool jedisPool = null;
		if ("testredis".equals(password)) {
			jedisPool = new JedisPool(jedisPoolConfig, host, port, 10000);
		} else {
			jedisPool = new JedisPool(jedisPoolConfig, host, port, 10000, password);
		}
		return jedisPool;
	}

}

1,变量表达式

变量表达式即OGNL表达式或Spring EL表达式(在Spring术语中也叫model attributes)。如下所示:

${session.user.name}

2,选择(星号)表达式

选择表达式很像变量表达式,不过它们用一个预先选择的对象来代替上下文变量容器(map)来执行,如下:

*{customer.name}

3,文字国际化表达式

文字国际化表达式允许我们从一个外部文件获取区域文字信息(.properties),用Key索引Value,还可以提供一组参数(可选).

 #{main.title}  
 #{message.entrycreated(${entryId})}

4,URL表达式

URL表达式指的是把一个有用的上下文或回话信息添加到URL,这个过程经常被叫做URL重写。

@{/order/list}

URL还可以设置参数:

@{/order/details(id=${orderId})}

相对路径:

@{../documents/report}

变量表达式和星号表达有什么区别吗?

如果不考虑上下文的情况下,两者没有区别;星号语法评估在选定对象上表达,而不是整个上下文。什么是选定对象?就是父标签的值

内嵌变量

为了模板更加易用,Thymeleaf还提供了一系列Utility对象(内置于Context中),可以通过#直接访问:
dates : java.util.Date的功能方法类。
calendars : 类似#dates,面向java.util.Calendar
numbers : 格式化数字的功能方法类
strings : 字符串对象的功能类,contains,startWiths,prepending/appending等等。
objects: 对objects的功能类操作。
bools: 对布尔值求值的功能方法。
arrays:对数组的功能类方法。
lists: 对lists功能类方法
sets
maps