
java>spring
文章平均质量分 78
java>spring
和代码去流浪
这个作者很懒,什么都没留下…
展开
-
java数据校验spring数据校验hibernate-validator一篇文章搞懂
3、上述两点只是描述了java开发进行数据校验的标准方式,但是我们开发中往往都会使用spring,那么spring其实也是有自己的校验接口的。由此可见,我们@Valid注解提供了递归校验,这样我们只要在对应的javaBean中写上注解,那么校验起来是非常有效的。上述这种spring的校验接口,相当于每个javaBean都要去写对应的XxxValidator接口,其实是非常不方便的。虽然我们在前台js进行了拦截,比如submit总体校验一遍,或者每个form控件blur失去焦点的时候进行了校验,但是。转载 2023-05-01 22:51:15 · 1521 阅读 · 1 评论 -
Spring的跨域解决方案总结
前言跨域是什么?浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口和协议,只要有一个不同就是跨域 。我们的项目通常是采用前后端分离开发的,也就是前后端分离部署的,所以必然会存在跨域问题。CORS(Cross-Origin Resource Sharing, 跨源资源共享)是W3C出的一个标准,其思想是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功,还是应该失败。Spring框架提供给我们多种方式解决跨域问题,下面列举比较常用的通过实现CORS解决跨域的两种..转载 2022-05-09 20:01:46 · 1486 阅读 · 0 评论 -
spring核心框架体系结构(jar包依赖)
很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置jar依赖,导致spring依赖混乱,甚至下一次创建相同类型的工程时也不知道要配置哪些spring的依赖,只有拷贝,其实,当初我就是这么干的! spring的jar包只有20个左右,每个都有相应的功能,一个jar还可能依赖了若干其他jar,所以,搞清...转载 2021-10-23 18:57:00 · 691 阅读 · 0 评论 -
spring 中事务的PROPAGATION_REQUIRED,Readonly的解释
一、事务传播行为种类Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播:事务传播行为类型 事务传播行为类型 说明 PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。 PROPAGATION_SUPPORTS ...转载 2021-01-29 15:37:44 · 456 阅读 · 0 评论 -
只读事务(@Transactional(readOnly = true))的一些概念
概念:从这一点设置的时间点开始(时间点a)到这个事务结束的过程中,其他事务所提交的数据,该事务将看不见!(查询中不会出现别人在时间点a之后提交的数据)应用场合:如果你一次执行单条查询语句,则没有必要启用事务支持,数据库默认支持SQL执行期间的读一致性;如果你一次执行多条查询语句,例如统计查询,报表查询,在这种场景下,多条查询SQL必须保证整体的读一致性,否则,在前条SQL查询之后,后条SQL查询之前,数据被其他用户改变,则该次整体的统计查询将会出现读数据不一致的状态,此时,应该启用事务支持..转载 2021-01-29 15:36:12 · 630 阅读 · 0 评论 -
spring注解事务@Transactional详解
事务注解方式: @Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: 1 @Transactional public class TestServiceBean implements TestService {} 当类中某些方法不需要事物时: 1 @Transactional 2 public class Test...转载 2021-01-29 15:34:57 · 317 阅读 · 0 评论 -
Spring事务篇
写在最前这些天看了一些关于Spring事务的文章,发现写的都很浅,基本上说一下事务特性和Spring事务传播行为就完事了,但是实际上事务不仅有这些,事务的来龙去脉没有讲清楚,具体原理也没有说。现在最新Spring版本已经到了5.2.0,翻了下源码,事务这块核心代码和4.x版本变化不大,所以本文的源码使用了Spring-tx:4.2.5.RELEASE。什么是事务事务存在的目的在日常开发中,我们在数据库中保存数据,在对数据库操作的过程中,为了使数据始终保持“正确”的状态,我们要对访问操作进转载 2020-12-30 15:56:59 · 408 阅读 · 0 评论 -
看京东架构师如何解决,数据库读写分离与事务纠缠的坑
本篇文章讨论在数据库读写分离时使用事务的那些坑:1. 在读写分离时会不会造成事务主从切换错误一个线程在Serivcie时Select时选择的是从库,DynamicDataSourceHolder中ThreadLocal对应线程存储的是slave,然后调用Manager时进入事务,事务使用默认的transacatinManager关联的dataSource,而此时会不会获取到的是slave?2. 事务隔离级别和传播特性会不会影响数据连接池死锁一个线程在Service层Select数据会从数据库获取一个Con.转载 2020-06-17 12:03:47 · 216 阅读 · 0 评论 -
Spring事务传播问题 — PROPAGATION_REQUIRES_NEW
一、描述Spring遇到嵌套事务时,当被嵌套的事务被定义为“PROPAGATION_REQUIRES_NEW”时,内层Service的方法被调用时,外层方法的事务被挂起;内层事务相对于外层事务是完全独立的,有独立的隔离性等等。二、实验但实验时却遇到一个奇怪的问题:1、当ServiceA.a()方法调用ServiceB.b()方法时,内层事务提交和回滚,都不受外层事务提交或回滚的影响。2、当Serv...转载 2019-10-25 23:00:25 · 563 阅读 · 0 评论 -
Spring三种切面
Spring除了支持Schema方式配置AOP,还支持注解方式:使用@AspectJ风格的切面声明。1 启用对@AspectJ的支持 Spring默认不支持@AspectJ风格的切面声明,为了支持需要使用如下配置:java代码:<aop:aspectj-autoproxy/>这样Spring就能发现@AspectJ风格的切面并且将切面应用到目标对象。2 声...转载 2019-09-28 20:23:49 · 2163 阅读 · 0 评论 -
Spring的两种动态代理:Jdk和Cglib 的区别和实现
一、原理区别:java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目...转载 2019-10-02 23:41:24 · 104 阅读 · 0 评论 -
jdk动态代理与CGLib的区别
昨天被人问及动态代理与CGlib的区别,赶紧回顾一下:什么是代理?静态代理与动态代理静态代理实例JDK动态代理实例CGLib 简介CGLib 与JDK动态代理的区别 代理模式是Java中常见的一种模式,英文名字叫走Proxy或者Surrogate,代理的本意是一个人代表另一个人,或者一个机构代表另一个机构,采取行动,因而,代理和现实生活中的中介有很大的类似,你买房子、卖房子,可以自己去...转载 2019-10-02 23:47:50 · 506 阅读 · 0 评论 -
restTemplate踩过的坑-spring clound
现在公司项目基本都从臃肿的项目转换成微服务的方向转换,因此也从中使用了spring clound的一些组件,在此过程中就遇到了restTemplate的坑。起初,是直接注入RestTemplate,后来则不断的遇到错误日志无法请求,出现异常。异常信息:org.springframework.web.util.NestedServletException: Request process...转载 2019-10-04 23:42:54 · 485 阅读 · 0 评论 -
spring使用AOP技术对DAO层操作进行增强功能
AOP的概述1. 什么是AOP的技术? * 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程 * AOP是一种编程范式,隶属于软工范畴,指导开发者如何组织程序结构 * AOP最早由AOP联盟的组织提出的,制定了一套规范.Spring将AOP思想引入到框架中,必须遵守AOP联盟的规范 * 通过预编译方式和运行期动态代...转载 2019-09-28 20:22:14 · 781 阅读 · 0 评论 -
JPA + SpringData 操作数据库 ---- 深入了解 SpringData
前言:之前为大家详细介绍了 JPA 的知识,之前提到 JPA 和 SpringData 结合才能发挥出无比巨大的威力。那么,今天楼主开始介绍 SpringData,写此篇的目的主要是为了复习,如果能帮助到有需要的朋友,那再好不过了。一、SpringData 概述1. SpringData:Spring 的一个子项目。用于简化数据库访问,支持NoSQL 和 关系数据存储。其主要目标是使数据库...转载 2019-09-28 20:19:33 · 353 阅读 · 0 评论 -
spring data jpa 详解
本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring整合的环境中实现。如果需要了解该框架的入门,百度一下,很多入门的介绍。在这篇文章的接下来一篇,会有一个系列来讲解mybatis,这个系列从mybatis的入门开始,到基本使用,和spring整合,和第...转载 2019-09-27 22:07:42 · 226 阅读 · 0 评论 -
@Validated和@Valid区别:Spring validation验证框架对入参实体进行嵌套验证必须在相应属性(字段)加上@Valid而不是@Validated
Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数验证结果。其中对于字段的特定验证注解比如@NotNull等网上到处都有,这里不详述在检验Controller的入参是否符合规范时,使用@...转载 2019-08-31 21:35:22 · 691 阅读 · 0 评论 -
springboot 定时任务(线程配置,并行【同步】、异步等)
1. 定时任务实现方式:SpringBoot自带的Scheduled,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,本文主要介绍。执行方式:单线程(串行)多线程(并行)2. 创建定时任务@Component@EnableSchedulingpublic class ScheduledTest{@Scheduled(cron="0/5 * * * * ?") public...转载 2019-08-31 21:33:35 · 621 阅读 · 0 评论 -
springboot 定时任务@Scheduled 和 异步@Async
使用@EnableScheduling开启功能@Configuration@EnableSchedulingpublic class ScheduleConfig {}编写任务@Componentpublic class ScheduledTasks { //表示上一次任务执行完成后多久再次执行,参数类型为long,单位ms; @Scheduled(fixedD...转载 2019-08-31 21:32:09 · 483 阅读 · 0 评论 -
Spring通过@Value给静态变量注入值
前提spring不允许/不支持把值注入到静态变量中,如 @Value("${smtpHost}") public static String smtpHost;在方法中获取的smtpHost则为null解决Spring支持set方法注入,可以利用非静态的setter方法注入静态常量。注意set方法不能有staticpublic static String smtpHost;@...转载 2019-08-29 22:16:08 · 160 阅读 · 0 评论 -
spring aop类内部调用不拦截原因及解决方案
spring对应java web开发的同学来说,都不陌生,其中事务@Transactional在service层更是常常使用。1.aop类内部调用不拦截原因细心的同学也许早就发现当service中的某个没标注@Transactional的方法调用另一个标注了@Transactional的方法时,居然没开启事务。例如@Servicepublic class UserServic...转载 2019-10-02 23:49:45 · 806 阅读 · 0 评论 -
JPA和hibernate以及SpringDataJPA
什么是jpaJPA java persistence api ,为POJO(就是我们的JavaBean)提供持久化标准规范,JavaEE规范之一主要思想,3个:1 ORM(Object Relational Mapping)映射元数据,通过XML或注解,描述对象和表之间的关系,框架据此将实体对象持久化到数据库关键字:ORM映射、实体持久化2 规范的API,通过操作...转载 2019-10-03 23:41:08 · 92 阅读 · 0 评论 -
JPA + SpringData 操作数据库 ---- 深入了解 SpringData
前言:之前为大家详细介绍了 JPA 的知识,之前提到 JPA 和 SpringData 结合才能发挥出无比巨大的威力。那么,今天楼主开始介绍 SpringData,写此篇的目的主要是为了复习,如果能帮助到有需要的朋友,那再好不过了。一、SpringData 概述1. SpringData:Spring 的一个子项目。用于简化数据库访问,支持NoSQL 和 关系数据存储。其主要目标是使数据库的访...转载 2019-08-23 22:40:39 · 145 阅读 · 0 评论 -
Spring配置事务的五种方式
Java事务的类型有三种:JDBC事务、 可以将多个 SQL 语句结合到一个事务中。JDBC 事务的一个缺点是事务的范围局限于一个数据库连接。一个 JDBC 事务不能跨越多个数据库JTA(Java Transaction API)事务、事务可以跨越多个数据库或多个DAO,使用也比较复杂。容器事务。主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用。&nb...转载 2019-10-10 23:01:00 · 120 阅读 · 0 评论 -
@Validated和@Valid区别:Spring validation验证框架对入参实体进行嵌套验证必须在相应属性(字段)加上@Valid而不是@Validated
Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数验证结果。其中对于字段的特定验证注解比如@NotNull等网上到处都有,这里不详述在检验Controller的入参是否符合规范时,使用@...转载 2019-10-10 22:58:53 · 472 阅读 · 0 评论 -
springboot 定时任务@Scheduled 和 异步@Async
使用@EnableScheduling开启功能@Configuration@EnableSchedulingpublic class ScheduleConfig {}编写任务@Componentpublic class ScheduledTasks { //表示上一次任务执行完成后多久再次执行,参数类型为long,单位ms; @Scheduled(fixedD...转载 2019-10-09 23:41:31 · 1265 阅读 · 0 评论 -
Spring @Scheduled @Async联合实现调度任务
定时任务之前一直用的是quartz之类,但是注意到Spring中其实也提供了一种简单的调度注释@Scheduled,也就想尝一下鲜..代码示意如下:@Component@EnableSchedulingpublic class AsyncTaskHandlerTask { @Scheduled(fixedDelay = 1000) public void tas...转载 2019-10-09 23:36:18 · 1221 阅读 · 1 评论 -
spring data jpa 查询参数为空的问题
spring data jpa 查询参数为空的问题 https://bbs.youkuaiyun.com/topics/390968657/原创 2019-10-09 23:34:43 · 2445 阅读 · 0 评论 -
Spring通过@Value给静态变量注入值
前提spring不允许/不支持把值注入到静态变量中,如 @Value("${smtpHost}") public static String smtpHost;在方法中获取的smtpHost则为null解决Spring支持set方法注入,可以利用非静态的setter方法注入静态常量。注意set方法不能有staticpublic static String smtpHost;@Val...转载 2019-10-04 23:45:52 · 282 阅读 · 0 评论 -
基于spring注解的定时任务-并行执行
1、定时任务简述:指定触发规则后,按照一定的频率自动往复执行。默认只有一个单例化的线程池(始终只有一个线程) 去处理定时任务;只有一个线程时,多个任务需要并行(同时)执行时会产生时间差【每个任务从执行开始 到结束需要的时间不同,单线程情况下,只能等前一个任务结束才能开始执行下一个任务】,导致实际 上每个任务不是按照指定的指定的频率执行。可以...转载 2019-10-04 23:43:59 · 500 阅读 · 0 评论 -
SpringBoot+Hibernate+Spring Data JPA+Maven入门
整合SpringBoot 和 Hibernate,实现简单的CRUD。框架版本SpringBoot 2.0.0.RELEASEHibernate 5.2.14.Finalpom.xml文件<parent> <groupId>org.springframework.boot</groupId> <artifa...转载 2019-10-03 23:47:26 · 297 阅读 · 0 评论 -
Spring整合Hibernate实现Spring Data JPA
在上一篇文章《Spring整合Hibernate实现JPA持久化》中,我们已经介绍了怎样在Spring容器中合理地集成Hibernate来实现JPA的ORM机制。但是,细心的读者会发现,上一篇文章中使用了EntityManager来直接与数据库交互,存在这一定的耦合度,更重要的是每当新增或修改新的实体Entity的管理时,都需要重复的实现EntityManager在Dao层的逻辑,有些过于模版化,...转载 2019-10-03 23:44:10 · 229 阅读 · 0 评论 -
spring data jpa 查询参数动态可为空的问题 解决
spring data jpa 查询参数动态可为空的问题 解决https://bbs.youkuaiyun.com/topics/390968657/转载 2019-08-29 22:30:18 · 4335 阅读 · 0 评论 -
Spring @Scheduled @Async联合实现调度任务
定时任务之前一直用的是quartz之类,但是注意到Spring中其实也提供了一种简单的调度注释@Scheduled,也就想尝一下鲜..代码示意如下:@Component@EnableSchedulingpublic class AsyncTaskHandlerTask { @Scheduled(fixedDelay = 1000) public void tas...转载 2019-08-29 22:32:00 · 381 阅读 · 0 评论 -
SpringBoot+Hibernate+Spring Data JPA+Maven入门
整合SpringBoot 和 Hibernate,实现简单的CRUD。框架版本SpringBoot 2.0.0.RELEASEHibernate 5.2.14.Finalpom.xml文件<parent> <groupId>org.springframework.boot</groupId> <artifa...转载 2019-08-28 23:34:37 · 161 阅读 · 0 评论 -
动态代理proxy与CGLib的区别
什么是代理?静态代理与动态代理静态代理实例JDK动态代理实例CGLib 简介CGLib 与JDK动态代理的区别 代理模式是Java中常见的一种模式,英文名字叫走Proxy或者Surrogate,代理的本意是一个人代表另一个人,或者一个机构代表另一个机构,采取行动,因而,代理和现实生活中的中介有很大的类似,你买房子、卖房子,可以自己去操作,但是需要了解和买卖房产无关的细节,如契税等,而找一...转载 2019-08-25 23:01:22 · 966 阅读 · 0 评论 -
Spring Test 整合 JUnit 4 使用总结
这两天做Web开发,发现通过Spring进行对象管理之后,做测试变得复杂了。因为所有的Bean都需要在applicationContext.xml中加载好,之后再通过@Resource去取得。如果每次都要整个业务流做的差不多了再去测试,这样效率很低,也很麻烦。如果单独去写一个测试用类,这样太繁琐了。于是想起Spring有一个测试框架,能够整合JUnit进行测试,于是便拿出来试试~1. 加入依...转载 2019-08-15 22:36:11 · 123 阅读 · 0 评论 -
Spring依赖注入:注解注入总结
注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解有Autowired、Resource、Qualifier、Service、Controller、Repository、Component。Autowired是自动注入,自动从spring的上下文找到合适的bean来注入Resource用来指定名称注入Qualifier和A...转载 2019-08-15 22:33:56 · 411 阅读 · 0 评论 -
Spring包结构以及各个包之间引用关系说明
Spring 包结构说明:spring.jar包含有完整发布的单个jar包。他包含有除spring-mock.jar之外的所有jar。原因是,spring-mock.jar只有在开发环境中才会用到,而且仅仅是作为一个辅助测试类存在。除了spring.jar,spring还包括13个独立的jar文件,他们各自包含这spring各自的组件。所以,如果你可以明确知道使用spring的哪些资...转载 2019-08-15 22:27:27 · 503 阅读 · 0 评论 -
Spring的两种动态代理:Jdk和Cglib 的区别和实现
一、原理区别:java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目...转载 2019-08-24 22:58:50 · 358 阅读 · 0 评论