Spring,SpringBoot
文章平均质量分 56
Spring,SpringBoot
tom和cat
知识的搬运工
展开
-
五种方案解决幂等问题
方案一:数据库唯一主键实现幂等性缺点:无法使用change buffer,InnoDB为了进行唯一性检查,必须有一次磁盘IO读页方案二:业务状态校验业务上根据业务ID的唯一性和业务处理的结果去做判断,但是这部分判断的逻辑需要考虑原子性。否则会因为并发问题导致幂等失效。解决途径一就是加锁,根据当前的服务环境选择单机或分布式锁。二是可采用现成方案Tomato,通过滑动窗口或者固定窗口拦截控制时间内的请求方案三:数据库乐观锁实现幂等性缺点:操作业务前,需要先查询出当前的versio原创 2021-08-11 16:51:39 · 7320 阅读 · 0 评论 -
spring是如何解决循环依赖的【面试总结版】
场景一:成员变量引入即A依赖B,B依赖A1. 在finishBeanFactoryInitialization中,开始初始化A,毋庸置疑通过反射2. 之后【非完美对象】开始设置属性字段,此时发现需要一个B的对象。同时已标记A处于正在初始化阶段3. 显然接下来,开始去初始化B的对象,同样的手法,到设置属性阶段,发现需要A对象4. 于是乎,spring又开始去初始化对象A的依赖,此时先从缓存singletonObjects去取,没有再去看是否正处于初始阶段,是则再从缓存earlySingletonObj原创 2020-11-24 16:30:55 · 481 阅读 · 0 评论 -
springboot+kafka+log4j
应用程序的日志信息可通过log4j同步到Kafka中,即:客户端——>后台服务应用程序——>Kafka集群代码如下:1.pom.xml文件导入log4j与kafka的集成依赖库 <dependency> <groupId>org.apache.kafka</groupId> ...转载 2018-11-12 14:07:00 · 1638 阅读 · 0 评论 -
jpa @query上使用if判断
@Query(value = "select * from xxx where if(?1 !='',x1=?1,1=1) and if(?2 !='',x2=?2,1=1)" + "and if(?3 !='',x3=?3,1=1) ",nativeQuery = true) List<XXX> find(String X1,String X2,...转载 2019-07-15 09:15:37 · 33694 阅读 · 13 评论 -
idea的lombok找不到getset方法
问题记录:git上拉取代码,打开工程代码没有报错。但是启动是出现问题,找不到getXXX()解决:打开setting原创 2019-06-10 11:48:02 · 4420 阅读 · 0 评论 -
Lombok注解
Lombok注解解析:@NonNull 使用在方法的参数或者构造器的参数上,用于生成null验证。 Lombok可以识别任何第三方工具的字段上标注的@NonNull名称的注解,并在使用@Data、@AllArgsContruct进行生成方法和构造器时进行null判断。 而Lombok的@NonNull注解使用在参数之上,仅仅作用到你自定义的方法和构造器之上。 null判断会采用...转载 2019-05-14 18:03:22 · 1339 阅读 · 0 评论 -
Gradle配置
build.gradle buildscript { repositories { ... } dependencies { ... } } bu...原创 2019-05-14 17:23:21 · 136 阅读 · 0 评论 -
Freemarker的使用
Freemarker新手教程https://blog.csdn.net/qq_23994787/article/details/77506980FreeMarker使用说明https://blog.csdn.net/qq_37366958/article/details/79890331freemarker 输出表格(待检验)https://blog.csdn.ne...原创 2019-05-08 16:17:07 · 250 阅读 · 0 评论 -
RESTful API规范
rest是一种软件架构风格,如果你们的接口是 rest接口,那么就可被认为你们的的接口是restful的,英文名词和形容词的区别。rest接口是围绕“资源”展开的,利用HTTP的协议,其实rest本也可以和HTTP无关,但是现在大家普遍的使用 rest都是依托于HTTP协议。HTTP 的url即资源。 协议API与用户的通信协议,总是使用HTTPs协议,确保交互数据的传输安...转载 2018-10-25 11:24:29 · 194 阅读 · 1 评论 -
Swagger使用
1:认识SwaggerSwagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。 作用: 1. 接口的文档在线自动生成。 2. 功能测试。 Swagger是一组开源项目,其中主要要项目如...转载 2018-10-25 11:18:00 · 118 阅读 · 0 评论 -
javax mail的maven依赖
1.spring依赖<dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1</version></dependency><dependenc...原创 2018-05-21 16:51:38 · 30711 阅读 · 4 评论 -
@Param注解的用法
实例一 @Param注解单一属性dao层示例Public User selectUser(@param(“userName”) String name,@param(“userpassword”) String password);xml映射对应示例<select id=" selectUser" resultMap="BaseResultMap"> select * fr...转载 2018-05-28 13:55:05 · 1807 阅读 · 0 评论 -
mybatis 返回主键一直为1
1是返回的插入成功的行数,这没有错而自增id则是直接映射到对象里,直接输出 xxx.getId()即可举例: 在xml中:<insert id="addUser" parameterType="blog.model.User" useGeneratedKeys="true" keyProperty="id">......12java中代码:int pr...转载 2018-05-23 10:26:28 · 1290 阅读 · 1 评论 -
MyBatis @Options使用方法
MyBatis的@Options注解能够设置缓存时间,能够为对象生成自增的主键值,一般应用于两种场景,今天小博老师就跟大家介绍下@Options注解如何在查询数据和插入数据时使用。场景一:首先先学习下在查询数据的情况下的应用场景。配合查询语句使用,主要是开关一些查询的选项。比如useCache = true表示将会缓存本次查询结果,以提高下次查询速度;flushCache = Options.Fl...原创 2018-05-09 14:24:10 · 24372 阅读 · 2 评论 -
mybatis传入参数为0被误认为是空字符串的解决方法
在mbatis中使用Xml配置sql语句时,出现了这样一个问题。当我传入的参数为0去做判断时,mybatis会把参数0当成是空字符串去判断而引起查询结果错误。下面是我之前配置的sql语句:[html] view plain copy<if test="overdueDayTypes!=null and overdueDayTypes!=''"> <if test="ov...转载 2018-05-30 19:06:07 · 603 阅读 · 0 评论 -
@Transactional(rollbackFor=Exception.class)
在项目中,@Transactional(rollbackFor=Exception.class),如果类加了这个注解,那么这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚。这种设置是因为Spring的默认回滚RuntimeException,如果想要回滚Exception时,要设置@Transactional(rollbackFor = Exception.class),而且Excep...原创 2018-04-27 10:03:41 · 1596 阅读 · 0 评论 -
Mybatis增删改查使用总结
一、select<!-- 查询学生,根据id --> <select id="getStudent" parameterType="String" resultMap="studentResultMap"> SELECT ST.STUDENT_ID, ST.STUDENT_NAME, ST....转载 2018-04-25 17:46:12 · 290 阅读 · 0 评论 -
mybatis <forEach>标签的使用
MyBatis<forEach>标签的使用你可以传递一个 List 实例或者数组作为参数对象传给 MyBatis。当你这么做的时候,MyBatis 会自动将它包装在一个 Map 中,用名称作为键。List 实例将会以“list”作为键,而数组实例将会以“array”作为键。foreach元素的属性主要有 item,index,collection,open,separator,clos...转载 2018-04-12 12:35:23 · 189 阅读 · 0 评论 -
resultMap 与 resultType、parameterMap 与 parameterType的区别
resultMap & resultType 两者都是表示查询结果集与java对象之间的一种关系,处理查询结果集,映射到java对象。 resultMap表示将查询结果集中的列一一映射到bean对象的各个属性。映射的查询结果集中的列标签可以根据需要灵活变化,并且,在映射关系中,还可以通过typeHandler设置实现查询结果值的类型转换,比如布尔型与0/1...转载 2018-04-12 12:02:02 · 364 阅读 · 0 评论 -
Mybatis中collection和association的使用区别
转载自:http://199604.com/7091. 关联-association2. 集合-collection比如同时有User.java和Card.java两个类User.java如下:public class User{private Card card_one;private List<Card> card_many;}在映射card_one属性时用association标...转载 2018-04-08 16:25:56 · 5561 阅读 · 0 评论 -
Mybatis:resultMap的使用总结
Mybatis的介绍以及使用:http://www.mybatis.org/mybatis-3/zh/index.html resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中。resultMap包含的元素:<!--column不做限制,可以为任意表的字段,而property须为type 定义的pojo属性--><...转载 2018-04-08 14:21:04 · 105 阅读 · 0 评论 -
mybatis中resultMap配置细则
出处。 https://blog.csdn.net/u012702547/article/details/54599132 resultMap算是mybatis映射器中最复杂的一个节点了,能够配置的属性较多,我们在mybatis映射器配置细则这篇博客中已经简单介绍过resultMap的配置了...转载 2018-04-08 12:03:05 · 168 阅读 · 0 评论 -
mybatis属性callSettersOnNulls,mapUnderscoreToCamelCase设置
mapUnderscoreToCamelCase:是否启用下划线与驼峰式命名规则的映射(如first_name => firstName)开启:mybatis-config.xml[html] view plain copy <!-- 开启驼峰命名转换 seckill_id====>seckillId --> <setting name="ma...原创 2018-04-03 14:17:29 · 2989 阅读 · 0 评论 -
@Transactional必须要了解的概念
Spring中的@Transactional必须要了解的概念spring中的@Transactional基于动态代理的机制,提供了一种透明的事务管理机制,方便快捷解决在开发中碰到的问题。一般使用是通过如下代码对方法或接口或类注释:1@Transactional(propagation=Propagation.NOT_SUPPORTED)Propagation支持7种不同的传播机制:REQUIRED...转载 2018-03-27 17:42:31 · 1066 阅读 · 0 评论 -
关于自治事务pragma autonomous_transaction的转载
数据库事务是一种单元操作,要么是全部操作都成功,要么全部失败。在Oracle中,一个事务是从执行第一个数据管理语言(DML)语句开始,直到执行一个COMMIT语句,提交保存这个事务,或者执行一个ROLLBACK语句,放弃此次操作结束。事务的“要么全部完成,要么什么都没完成”的本性会使将错误信息记入数据库表中变得很困难,因为当事务失败重新运行时,用来编写日志条目的INSERT语句还未完成。针对这种困...转载 2017-11-15 10:05:38 · 1002 阅读 · 0 评论 -
SpringBoot2.0中的监控
Spring Boot 2.0官方文档之 Actuatorhttps://blog.csdn.net/alinyua/article/details/80009435SpringBoot2.x中的应用监控:Actuator+Prometheus+Grafanahttps://blog.csdn.net/MyHerux/article/details/80667524SpringBo...原创 2019-11-06 11:32:57 · 234 阅读 · 0 评论 -
springboot使用websocket
https://blog.csdn.net/moshowgame/article/details/80275084https://blog.csdn.net/moshowgame/article/details/83024867转载 2019-07-15 10:19:06 · 99 阅读 · 0 评论 -
Redis安装与使用(java版)
Spring Boot 与缓存https://blog.csdn.net/pavel101/article/details/84339421Redis缓存管理器https://blog.csdn.net/pavel101/article/details/84581061https://www.jianshu.com/p/6943bb8a9ab8?utm_source=oschina...原创 2019-05-15 10:34:55 · 746 阅读 · 0 评论 -
@Async异步调用的使用及原理
同步和异步:同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。 异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而,异步方法通常会在另外一个线程中,“真实”地执行着。整个过程,不会阻碍调用者的工作。使用@Async的使用网上例子很多如:https://blog.csdn.net/v2sking/article/d...原创 2019-01-08 22:06:12 · 1021 阅读 · 0 评论 -
关于jpa对象一对多或多对多映射进入死循环的问题
当我查询一个一对多的实体的时候,postman直接爆了,差不多我就猜到是哪里死循环了,debug时还会有堆溢出的问题,再然后是jsckson的错误。那么必然是序列化的问题了。 解决方式1.采用单向多对一的形式,这样就不会出现循环的问题,这个确实是个方案,但是如果在一的那边需要使用到多的这边的话,就不好搞了。所以感觉还是不是很满意。 2.在关联的实体上面设置@JsonIgnore...原创 2019-01-08 12:13:37 · 3862 阅读 · 3 评论 -
jpa动态查询
原生方式 CareFacility careFacility = new CareFacility(); if(!facilityDynamicVM.getFacilityType().isEmpty()){ FacilityTypeEnum facilityTypeEnum = FacilityTypeEnum.checkEnum(fa...原创 2018-12-27 10:54:18 · 680 阅读 · 3 评论 -
springboot启动流程
https://segmentfault.com/a/1190000014525138 @SpringBootApplication注解// 注解的适用范围,其中TYPE用于描述类、接口(包括包注解类型)或enum声明@Target(ElementType.TYPE)// 注解的生命周期,保留到class文件中(三个生命周期)@Retention(RetentionPolicy...原创 2018-10-29 17:40:12 · 186 阅读 · 0 评论 -
SpringBoot项目中的多数据源支持
SpringBoot项目中https://blog.csdn.net/weixin_39835887/article/details/84921565mysql主从原理https://baijiahao.baidu.com/s?id=1595054968136602474&wfr=spider&for=pc主从配置和主主配置https://www.cnbl...转载 2018-09-23 16:26:56 · 178 阅读 · 0 评论 -
SpringBoot 配置Mysql多数据源DataSource以及各种工作环境切换
通常我们一个项目可能存在开发、联调、测试、线上等环境,那么我们使用SpringBoot的工作环境切换配置会很方便,首先新建一个application-dev.properties开发环境文件,然后再application.properties主文件中使用spring.profiles.active=dev引入开发环境配置即可。下面开始详解多数据源的配置:1.在application-dev...原创 2018-07-30 17:34:22 · 3932 阅读 · 0 评论 -
表格字段常用注解@NotBlank @NotEmpty @NotNul @Pattern
在Hibernate Validator(org.hibernate.validator.constraints)中:@NotEmpty://CharSequence, Collection, Map 和 Array 对象不能是 null 并且相关对象的 size 大于 0。 @NotBlank://String 不是 null 且去除两端空白字符后的长度(trimmed length)大于 0...转载 2018-04-18 15:56:18 · 1853 阅读 · 0 评论 -
springboot过滤器和拦截器的实现和区别
前言springmvc中有两种很普遍的AOP实现:1.过滤器(Filter)2.拦截器(Interceptor)本篇面对的是一些刚接触springboot的人群所以主要讲解filter和interceptor的简单实现和它们之间到底有什么区别(一些复杂的功能我会之后发出文章,请记得关注)Filter的简单实现字面意思:过滤器就是过滤的作用,在web开发中过滤...转载 2018-04-13 11:41:14 · 2175 阅读 · 0 评论 -
spring boot自动化配置原理
spring-cloud其他文章: 我们有必要花时间了解spring boot吗? spring boot集成ActiveMQ spring-cloud中eureka进行服务治理概述spring boot系列(第一篇):我们有必要花时间了解spring boot吗?spring boot好用,原因在于省去了很多繁杂的配置。一般开发服务端项目需要的服...转载 2018-04-13 10:16:52 · 242 阅读 · 0 评论 -
springboot系列之-logging
springboot系列之-logging配置文件以application.yml为例说明:Spring Boot默认的日志组件为Logback。一. 日志配置参数:logging: file: # 日志文件,绝对路径或相对路径 path: # 保存日志文件目录路径 config: # 日志配置文件,Spring Boot默认使用classpath路径下的日志配置文...转载 2018-04-03 14:33:28 · 1102 阅读 · 0 评论 -
spring boot 的常用注解
转载自https://www.cnblogs.com/ScvQ/p/7007636.html@RestController和@RequestMapping注解4.0重要的一个新的改进是@RestController注解,它继承自@Controller注解。4.0之前的版本,spring MVC的组件都使用@Controller来标识当前类是一个控制器servlet。使用这个特性,我们可以开发RES...转载 2018-03-29 10:00:35 · 432 阅读 · 0 评论 -
imooc很有意思的springBoot入门教程笔记
前言Spring Boot是用来简化Spring应用初始搭建以及开发过程的全新框架,被认为是SpringMVC的接班人,和微服务紧密联系在一起。Spring Boot 简单实例DemoSpringMVC 的优缺点优点:Spring Boot适合快速开发,适合构建微服务系统。封装了经常使用的组件,比如MyBatis, Hibernate, MongoDB等。纯Java的配置,简单方便。配置Mav...原创 2018-03-28 14:49:07 · 837 阅读 · 0 评论