
Spring入门到精通
文章平均质量分 57
养-乐多
这个作者很懒,什么都没留下…
展开
-
No converter for [class XXX] with preset Content-Type ‘application/octet-stream;charset=UTF-8‘
No converter for原创 2022-08-29 12:24:32 · 15299 阅读 · 0 评论 -
Spring的@Transactional的传播机制
@Transactional(propagation = Propagation.REQUIRED)针对子方法:老板没饭吃(没有事务),我有钱我可以自己吃;老板有饭吃(有事务),我也有饭吃。@Transactional(propagation = Propagation.SUPPORTS)针对子方法:老板没饭吃,我也没饭吃;老板有饭吃,我也有饭吃。@Transactional(propag......原创 2020-03-13 12:36:26 · 3276 阅读 · 1 评论 -
Spring Validation最佳实践及其实现原理,参数校验没那么简单!
之前也写过一篇关于Spring Validation使用的文章,不过自我感觉还是浮于表面,本次打算彻底搞懂Spring Validation。本文会详细介绍Spring Validation各种场景下的最佳实践及其实现原理,死磕到底!项目源码:spring-validation(https://github.com/chentianming11/spring-validation)。简单使用Java API规范(JSR303)定义了Bean校验的标准validation-api,但没有提供实现。hibe转载 2021-05-13 16:11:50 · 333 阅读 · 0 评论 -
Spring注入的正确使用
想必不在乎代码警告的人可能根本就没有察觉到下面的代码是有问题的:@Autowireprivate JdbcTemplate jdbcTemplate;鼠标移动上去观察提示:Field injection is not recommended Inspection info: Spring Team recommends: “Always use constructor based dependency injection in your beans. Always use assertions f原创 2021-03-31 10:32:30 · 346 阅读 · 0 评论 -
Spring MVC接收数组或集合的写法
有时候为了方便一两个参数直接写在URL查询参数上,方便前端也方便后端。比如说我现在需要接收一组数据,如果写在URL上该如何写呢?前端this.$http({ url: this.$http.adornUrl(`/basic/fieldDictionary`), method: 'get', params: this.$http.adornParams({ 'strings': [6, 7].join()原创 2021-01-31 16:19:39 · 459 阅读 · 0 评论 -
@ControllerAdvice根据不同的HTTP客户端返回不同的结果
前言该注解的作用就不用多说,但有时候我们的项目接口存在前后端混合接口(即有JSON格式,也有HTML格式的),要想在处理异常的时候根据不同情况来区分该如何做呢?这个问题我看到很多博客封装了各种工具类来判断是Web还是Ajax等等一大堆的逻辑,说实在我并不看好这种配置。现在SpringBoot兴起,不知道大家有没有发现当我们在浏览器上请求接口(浏览器返回的是HTML格式)与在Postman请求接口(Postman返回的是JSON格式)返回的结果是不一样的。那SpringBoot是如何处理的呢?答案就在Ba原创 2020-07-31 16:49:21 · 844 阅读 · 0 评论 -
关于@RequestBody与Content-Type的疑惑
我的结论由此文章总结出来的:https://www.jianshu.com/p/6a83b73060bb也是我的一个疑问。有时候就两三个字段,去创建一个对象,有点浪费也挺麻烦的。所以Content-Type使用application/x-www-form-urlencoded是很方便的。对此我也动手试了下,得出的结论是:当使用@RequestBody标注了那么表示请求体里面是JSON格式的...原创 2019-05-29 17:11:00 · 1738 阅读 · 0 评论 -
基于XML和注解的事务(中篇)
都知道在事务的控制不是提交就是回滚,正常情况下正常执行就提交,异常就回滚。所以只要存在事务的情形下,这个范式代码是少不了的: public void transfer(String account1, String account2) { Connection conn = //初始化忽略 try { customerDao.save(customer); conn.commit(); } catch(SQLException e) { // 其它忽略 conn.rol原创 2020-08-13 18:18:33 · 162 阅读 · 0 评论 -
基于注解的AOP(下篇)
Spring发展到现在,基本上能用XML的配置,注解也是可以做到的。回顾下上篇的标签aop:aspect、aop:pointcut、aop:before、aop:after-returning、aop:after-throwing、aop:after、aop:around如果使用注解的该怎么写?前置、后置、异常、最终通知/** * @Aspect表示是切面,等同于XML中aop:aspect标签 */// @EnableAspectJAutoProxy@Aspect@Componentpub原创 2020-08-13 15:24:26 · 162 阅读 · 0 评论 -
基于XML的AOP(上篇)
AOP——面向切面编程,一种编程思想。这种编程方式是对面向对象编程的补充,你想不管是继承还是实现都是纵向的,而AOP则是横向的。而代理模式可以说是AOP的一种实现方式,因此当我们使用AOP的时候,一般就会用代理模式来做。对于Spring框架来说,要想使用AOP跟IOC一样,也是分两种情况,即基于XML和基于注解。前置通知准备增强基础代码public class Logger { public void beforeInfo() { System.out.println("前置通知:信息开始")原创 2020-08-13 14:39:11 · 165 阅读 · 0 评论 -
AOP相关指示符说明(初篇)
AOP表达式中常用的指示符,如图(摘自慕课网):包、类型within()表示匹配该包以及子包下面所有类的方法 /** * within(com.xanthuim.springaop.service..*) */ @Pointcut("within(com.xanthuim.springaop.service.impl.*)") public voi......原创 2018-12-28 15:47:16 · 410 阅读 · 1 评论 -
Spring事务常见问题和解决办法
Spring事务配置主要有两种,第一种是XML配置方法前缀,第二种方法是使用注解。很多项目中或多或少都使用过这两种方式,但是我这里推荐优先使用注解的方式。为什么?下面总结说。列出我在开发、测试中遇到的几个问题(使用XML和开启事务注解)。<!-- XML配置事务的传播特性 --> <tx:advice id="txAdvice"> <...原创 2018-07-13 16:24:26 · 3899 阅读 · 0 评论 -
基于注解的IOC和DI(下篇)
说明:由于能更好的说明IOC,本文章基于Spring 4.2.4版本。此篇为基于注解的IOC的下篇,有关于上篇请看Spring入门到精通之基于XML的IOC(上篇)。从上篇可以看到基于XML的方式还是比较繁琐的,感觉就是在面向XML编程……因此Spring框架的大佬也考虑到这一点,因此开发出基于注解的方式来配置,接下来看下注解是怎么定义的吧!一、IOC基于注解// value参数可以省略,默认是类的短名称,开头字母小写。@Component(value = "customerService").原创 2020-08-12 12:54:26 · 185 阅读 · 0 评论 -
基于XML的IOC和DI(上篇)
概念首先来看下百度百科是如何描述IOC的:控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。总的来说IOC只做了一件事,那就是减低代码之间的耦合度!但在开始之前,我们要清楚所谓减低耦合度,其实也是在减低依赖性,而不是消除。那么在编程中如何减低呢?那就是面向接口编程,所有的依赖全部使用接口对象,而不是具体实现者,真正使用的时候才从外界传入(具体的实现者)到依赖的对象中。那么问题来了,具体的实现者总得有个地方来定义或原创 2020-08-11 18:23:42 · 339 阅读 · 0 评论