SpringBoot的高级用法
springboot开箱即用
1.redis简介
redis:Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询. Redis 内置了 复制(replication), LUA脚本(Lua scripting), LRU驱动事件(LRU eviction), 事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel) 和自动 分区(Cluster)提供高可用性(high availability)
你可以对这些类型执行 原子操作 , 列如: 字符串(strings)的append 命令; 散列(hashes)的hincrby命令; 列表(lists)的lpush命令; 集合(sets)计算交集sinter命令, 计算并集union命令 和 计算差集sdiff命令; 或者 在有序集合(sorted sets)里面获取成员的最高排名zrangebyscore命令.
为了实现其卓越的性能, Redis 采用运行在 内存中的数据集工作方式. 根据您的使用情况, 您可以每隔一定时间将 数据集导出到磁盘 , 或者 追加到命令日志中. 您也可以关闭持久化功能,将Redis作为一个高效的网络的缓存数据功能使用.
Redis 同样支持 主从复制(能自动重连和网络断开时自动重新同步),并且第一次同步是快速的非阻塞式的同步.
其他功能包括:
事务(Transactions)
订阅分发(Pub/Sub)
LUA脚本(Lua scripting)
过期自动删除key
内存回收
自动故障转移
您可以使用 大多数的编程语言 来使用Redis.
Redis 使用 ANSI C 编写并且能在绝大Linux系统上运行,基于BSD协议,对OS X没有外部依赖. 我们支持Linux 和 OS X两种系统的开发和测试,我们推荐使用Linux部署. Redis 可以像SmartOS一样运行在Solaris系统中, 但是我们会最大力度的支持它. 官方不支持Windos版本的Redis,但微软开发和维护着支持win-64 的Redis版本.
2.关于配置文件说明
yml和properties属性名相同时,以yml为准
2.1.1properties文件说明
1.语法 1. key=value 结构
2.pro中的属性-值默认条件下都是String类型 不需要添加引号
2.1.2YML文件说明
#语法
# 1. 数据结构 key: value 使用:(空格)链接
# 2. YML文件中有文件父子级结构 采用缩进的方式实现.
server:
port: 8090
2.2为属性赋值
2.2.1业务需求
有时需要动态的获取属性的值,如果直接写到代码中需要重新打包编译,代码的耦合性较高.
能否利用配置文件的方式,动态的为属性赋值?
2.2.2 YML方式为属性赋值
1)编辑YML配置文件
#语法
# 1. 数据结构 key: value 使用:(空格)链接
# 2. YML文件中有文件父子级结构 采用缩进的方式实现.
server:
port: 8090
# 为Redis设定属性和属性值
redis.host: 127.0.0.1
redis.port: 6379
2)为属性赋值
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RedisController {
/**
* 当程序启动时,会自动的加载YML配置文件,将数据保存到Spring的内部.
* 之后通过${key}(spel表达式)进行数据的取值.
*/
@Value("${redis.host}")
private String host; // = "127.0.0.1";
@Value("${redis.port}")
private int port; // = 6379;
@RequestMapping("/getNode")
public String getNode(){
return host + ":" + port;
}
}
2.2.4指定配置文件为属性赋值
1).定义properties文件
2).编辑RedisController
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
//指定配置文件进行加载
@PropertySource("classpath:/properties/redis.properties")
public class RedisController {
/**
* 当程序启动时,会自动的加载YML配置文件,将数据保存到Spring的内部.
* 之后通过${key}(spel表达式)进行数据的取值.
* 1.通过YML方式赋值
*
*/
@Value("${redis.host}")
private String host; // = "127.0.0.1";
@Value("${redis.port}")
private int port; // = 6379;
//2.通过pro方式赋值
@Value("${redis2.host}")
private String host2;
@Value("${redis2.port}")
private int port2;
@RequestMapping("/getNode")
public String getNode(){
return "YML取值方式"+host + ":" + port+"| " +
"pro取值方式:"+host2+":"+port2;
}
}
1.2 为Redis设定属性和属性值
1)关于配置文件说明
redis.host: 127.0.0.1
redis.port: 6379
2).为属性赋值
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RedisController {
/**
* 当程序启动时,会自动的加载YML配置文件,将数据保存到Spring的内部.
* 之后通过${key}(spel表达式)进行数据的取值.
*/
@Value("${redis.host}")
private String host; // = "127.0.0.1";
@Value("${redis.port}")
private int port; // = 6379;
@RequestMapping("/getNode")
public String getNode(){
return host + ":" + port;
}
}
1.3环境切换
1.3.1业务需求
切换工作环境时,需要修改大量的配置文件,进行优化
1.3.2实现多环境配置
#挑选执行环境 SpringCloud微服务配置 N多个YML配置文件 配置中心
spring:
profiles:
active : test
--- #环境分割线
#语法
# 1. 数据结构 key: value 使用:(空格)链接
# 2. YML文件中有文件父子级结构 采用缩进的方式实现.
#定义环境名称 2.4.0版本需要如下的格式
spring:
config:
activate:
on-profile: test
server:
port: 8090
# 为Redis设定属性和属性值
redis.host: 127.0.0.1
redis.port: 6379
# 通过---方式实现YML环境的分割
---
spring:
profiles: prod #2.4.0以下的写法
server:
port: 9000
# 为Redis设定属性和属性值
redis.host: 192.168.1.1
redis.port: 7000
1.4热部署
弊端: IDEA启动时特别耗费内存,如果配置了热部署,则卡上加卡 (自己决定)
1.4.1添加jar包
<!--支持热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
1.4.2IDEA配置
组合键:ctrl+alt+shift+/