打包上传
要把构建(jar包)部署到Nexus,需要在pom文件中定义distributionManagement来提供仓库URL,然后运行mvn deploy。Maven会执行一个HTTP的PUT请求将POM和构建推入至你的Nexus。
账号密码配置在./m2/setting.xml
文件中
运行时找不到bean
工程添SpringBootApplication加注解1
"com.zzp"}) (basePackages = {
依赖包强更新
依赖包下载之后会放到缓存中,假如有新包打包上传成功后,如果版本号没有变,很有可能导致新包不能立即生效。maven的reimport也没有用,因为每次使用的包都是缓存的。
如果是Maven遇到不能刷新本地依赖的话,需要做两件事情:
- 到~/.m2下,看看jar包路径是不是带有”.lastUpdated”,有的话就删除之。
- 带参数强制刷新mvn build -U
分层领域模型规约:
- DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
- DTO( Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。
- BO( Business Object):业务对象。 由Service层输出的封装业务逻辑的对象。
- AO( Application Object):应用对象。 在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。
- VO( View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。
- POJO( Plain Ordinary Java Object):在本手册中, POJO专指只有setter/getter/toString的简单类,包括DO/DTO/BO/VO等。
- Query:数据查询对象,各层接收上层的查询请求。 注意超过2个参数的查询封装,禁止使用Map类来传输。
领域模型命名规约:
- 数据对象:xxxDO,xxx即为数据表名。
- 数据传输对象:xxxDTO,xxx为业务领域相关的名称。
- 展示对象:xxxVO,xxx一般为网页名称。
- POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。
Cacheable
报错java.lang.Integer cannot be cast to java.lang.String
redis中key不能将Integer强制转化为String类型。转化为字符串必须通过String.valueOf(integer) 或者Integer.toString(integer)或者Integer.toString():1
redisTemplate.setKeySerializer(stringRedisSerializer());
如何解决?直接强改#authorId + ''
数字转字符串1
2
3
4
5
6 (
cacheManager = "redisCacheManager",
value = "wapAuthorTopArticles",
key = "#authorId + ''",
unless = "#result == null"
)
Jackson
转换泛型List出现错误java.util.LinkedHashMap cannot be cast to com.xxx
,解决方法:1
2
3import com.fasterxml.jackson.databind.ObjectMapper;
private ObjectMapper mapper = new ObjectMapper();
List<ConsultantDto> myObjects = mapper.readValue(jsonInput, new TypeReference<List<ConsultantDto>>(){});
Spring Bean 生命周期
http://winshu.tk/article/27
事物
事物的特性(ACID)
- 原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;
- 一致性: 执行事务前后,数据保持一致;
- 隔离性: 并发访问数据库时,一个用户的事物不被其他事物所干扰,各并发事务之间数据库是独立的;
- 持久性: 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。