本文学习自 纯洁的微笑 Spring Boot 教程
Spring Boot 示例程序:
maven构建项目
下载Spring Boot模板:
- 访问http://start.spring.io/
- 选择构建工具Maven Projec, 其他默认即可,
- 点击Generate Project下载项目压缩包
- 下载后解压, 再使用idea打开
项目结构介绍:
本文学习自 纯洁的微笑 Spring Boot 教程
Spring Boot 示例程序:
下载Spring Boot模板:
项目结构介绍:
1.需要分离出来的类
OSS 封装为接口 阿里云 与 七牛云
阿里云方法:
七牛云
读取
更新
两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。
插入
刷新内存,以memcached为例,新增,修改和删除操作,一般采用lazy load的策略,即新增时只写入数据库,并不会马上更新Memcached,而是等到再次读取时才会加载到Memcached中,修改和删除操作也是更新 数据库,然后将Memcached中的数据标记为失效,等待下次读取时再加载。
由于使用了多台tomcat, 在Nginx做负载均衡时会将请求随机分发到各个tomcat上, 当属于tomcat_1的登陆后会话请求被转发到tomcat_2上时, 就会出现登陆验证错误, 因为tomcat_2上这个会话并未登陆.
解决方法, 通过Memcache保存Session会话.
redirect
跳转页面会导致 session 值丢失. 参考连接1 参考连接2https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
https://www.cnblogs.com/jsonhc/p/7344902.html
wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/2.1.1/memcached-session-manager-2.1.1.jar
wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager-tc8/2.1.1/memcached-session-manager-tc8-2.1.1.jar
wget http://repo1.maven.org/maven2/net/spy/spymemcached/2.11.1/spymemcached-2.11.1.jar
wget http://repo1.maven.org/maven2/de/javakaffee/msm/msm-javolution-serializer/1.8.3/msm-javolution-serializer-1.8.3.jar
wget http://repo1.maven.org/maven2/de/javakaffee/msm/msm-javolution-serializer/2.1.1/msm-javolution-serializer-2.1.1.jar
service 层
的实现中添加对应的缓存即可. 1 | @Override |
1 | package com.jnshu.controller; |
1 | # 1984组 求学大作战后台服务 academy_canary_admin_web |
springboot 导入外部配置, core定义全局配置:
1 | spring: |
1 | <properties> |
1 | <dependencies> |
1 | <plugins> |
1 | @SuppressWarnings("unchecked") |
1 | @SuppressWarnings(value={"unchecked", "rawtypes"}) |
1 | @SuppressWarnings("all") |
关键字 | 用途 |
---|---|
all | 抑制所有警告 |
boxing | 抑制与箱/非装箱操作相关的警告 |
cast | 抑制与铸造操作相关的警告 |
dep-ann | 相对于弃用的注释,抑制警告 |
deprecation | 抑制相对于弃用的警告 |
fallthrough | 在switch语句中,相对于缺失的中断,抑制警告 |
finally | 抑制警告相对于最终阻止不返回的警告告 |
hiding | 抑制相对于隐藏变量的局部的警告 |
incomplete-switch | 为了在switch语句(enum案例)中抑制相对于缺失条目的警告告 |
nls | 要抑制相对于非nls字符串字面量的警告 |
null | 抑制null相关的警告 |
rawtypes | 在类params上使用泛型时,抑制相对于非特异性类型的警告 |
serial | 针对可串行化类,抑制相对于缺少serialVersionUID字段的警告 |
static-access | 抑制不正确的静态访问的警告 |
synthetic-access | 抑制相对于内部类的未优化访问的警告 |
unchecked | 抑制相对于未检查操作的警告 |
unqualified-field-access | 禁止与字段访问不合格的警告 |
unused | 抑制相对于弃用的警告 |
deprecation | 抑制未使用的代码的警告 |
1 | <!-- redis --> |
地址: http://mvnrepository.com/
点开相关版本,查看Compile Dependencies 列表,会显示此包所依赖的相关版本信息.
其最低的spring依赖版本为4.3.10.RELEASE,将spring版本升级到到4.3.10
报错异常 :
Expected raw type form of org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry
redis连接配置 redis.properties
redis.host=127.0.0.1
redis.port=6379
redis.pass=
redis.maxIdle=300
redis.maxWait=1000
redis.testOnBorrow=true
添加redis spring配置 `applicationContenxt-redis.xml
导入redis连接配置
1 | <context:property-placeholder location="WEB-INF/config/other/redis.properties"/> |
报错 Could not resolve placeholder
参考连接
因为使用了多个PropertyPlaceholderConfigurer或者多个context:property-placeholder的原因。
一定要记住,不管是在一个Spring文件还是在多个Spring文件被统一load的情况下,直接写多个都是不允许的.
解决方法
1 | <context-param> |
ignore-unresolvable="true"
参数,一个加另一个不加也是不行的1 | <context:property-placeholder location="xxx.properties" ignore-unresolvable="true"/> |