zoukankan      html  css  js  c++  java
  • Spring Boot学习总结二

    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;
    	}
    
    }
    

    thymeleaf使用详解

    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

  • 相关阅读:
    mysql #与$的区别
    linux连接mysql
    19年春第十三周学习
    第二阶段冲刺-02
    第二阶段冲刺-01
    19年春第十二周学习
    第一阶段SCRUM冲刺-10
    第一阶段SCRUM冲刺-09
    第一阶段SCRUM冲刺-08
    19年春第十一周学习
  • 原文地址:https://www.cnblogs.com/ylzhang/p/9871560.html
Copyright © 2011-2022 走看看