![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
bluespacezero
这个作者很懒,什么都没留下…
展开
-
Spring JdbcTemplate RowCallbackHandler和RowMapper<T>的比较
从功能上讲,RowCallbackHandler和RowMapper没有太大的区别,它们都是用于定义结果集行的读取逻辑,将ResultSet中的数据映射到对象或者List中 。 RowCallbackHandler接口实现类可以是有状态的,而RowMapper的实现类应该是无状态的。如果RowCallbackHandler实现类是有状态的,用户就不能在多个地方复用,只有无状态的实例都能在不同的地原创 2016-06-28 02:00:28 · 4342 阅读 · 0 评论 -
使用JOOQ seek语句及动态SQL重写MySQL分页逻辑
众所周知,MySQL在数据量很大的时候查询的效率是很低的,因为假如你需要OFFSET 100000 LIMIT 5这样的数据,数据库就需要跳过前100000条数据,才能返回给你你需要的5条数据。由于数据在磁盘上面不一定是相等长度的,所以没法在跳过这100000条数据上面进行优化,只能一条一条地查找数据、找到结尾处并查找下一条,这就导致了数据库很差的性能。解决的办法就是使用seek这种方法,可以参考这原创 2016-12-07 22:51:27 · 5312 阅读 · 2 评论 -
Spring 4MVC 返回Java 8 时间JSON格式的数据
有时在Spring MVC中返回JSON格式的response的时候会使用@ResponsrBody或者RestController注解,不过在处理时间的时候会很麻烦,一般我们使用的HTTPMessageConverter是MappingJackson2HttpMessageConverter,它默认返回的时间格式是这种:"startDate" : { "year" : 2010,原创 2016-11-26 21:41:56 · 2105 阅读 · 0 评论 -
Spring AMQP 发送JSON格式的对象及Java 8时间转换成JSON格式
和@RequestBody注解类似,使用AMQP发送消息时如果需要把对象序列化成JSON格式的对象,也需要设置MessageConverter。而在JSON序列化的库中,口碑最好而且更新比较稳定的便是Jackson库,而且添加了对Java 8时间API的支持。 //以下配置RabbitMQ消息服务 @Bean public ConnectionFactory rabbitCon原创 2016-12-09 23:41:08 · 5201 阅读 · 0 评论 -
Spring 4 WebSocket发送到指定用户:convertAndSendToUser函数
有时推送需要推送到指定的用户,这时就需要使用@SengToUser注解或者convertAndSendToUser这个函数,需要注意的是,推送到特定用户不一定非要使用Spring Security这个框架来实现登录和访问控制,我在项目中使用的是Apache Shiro。 在用户登录之后,在Session里面设置相应的Principal: UsernamePasswordToken t原创 2016-12-14 15:07:39 · 21431 阅读 · 5 评论 -
Spring MVC 在@RequestParam和@RequestBody中使用Java 8时间LocalDateTime
在@RequestParam中使用的时候: @PostMapping("/userVipInfoUpdate2") public Map<String, Object> updateUserInfo(@RequestParam int id, @RequestParam int vip,原创 2017-01-18 14:41:43 · 10149 阅读 · 4 评论 -
在tomcat中Spring如何管理不同webapp目录下的应用程序
在《深入理解 虚拟机》第二版第九章中作者提到了一个问题,背景是这样的,Tomcat 5为了隔离不同应用程序使用的Java类库的不同版本,而且共享不同应用程序中的相同的java类库,使用了几个不同的目录,对应每个目录有着不同的类加载器。其结构如下:上面三个是JDK提供的三个默认类加载器:启动类加载器、扩展类加载器和应用程序类加载器。而下面的几个是tomcat自己定义的类加载器,分别用来加载相应目录下的转载 2017-02-28 14:54:36 · 1127 阅读 · 0 评论 -
Jackson @JsonView注解自定义返回POJO类的字段
Jackson在Spring框架中可以用来将数据以JSON的格式返回给客户端,@JsonView注解可以作用在POJO类的属性上,用来自定义返回的类的字段,比如一个用户类,有时只需要返回ID,有时却需要返回ID和姓名:public class User { public interface IDView {}; public interface IDAndNameView exten原创 2018-01-04 14:47:33 · 2267 阅读 · 0 评论 -
Spring5源码阅读--如何解决循环依赖?
首先要明确的是,循环依赖有以下几种:构造函数的循环依赖。这种依赖显然是解决不了的。非单例Bean的循环依赖。这种依赖也是解决不了的。单例Bean的循环依赖。本文介绍的就是如何解决单例Bean的循环依赖的问题。先来看一下测试代码,为了省略篇幅去掉setter和getter代码://Car.javapackage beans;public class Car { String name原创 2018-03-19 16:14:28 · 1474 阅读 · 1 评论 -
ApplicationContext和BeanFactory
首先要明白两点:BeanFactory和ApplicationContext都是容器,也就是放置所有Java Bean对象的地方,而且它们的关系是ApplicationContext继承自 BeanFactory。BeanFactory的最重要的一个方法是getBean(),调用这个方法会返回给你一个已经完全初始化好的对应的bean对象,不需要你自己去硬编码对象的创建逻辑和创建过程,这样做...原创 2018-03-25 12:15:21 · 349 阅读 · 0 评论 -
cglib原理解析
先放上示例代码://Person.javapublic class Person { public void sayHello() { System.out.println("Hello!"); }}//Test.javaimport org.objectweb.asm.ClassWriter;import net.sf.cglib.proxy....转载 2018-03-29 17:07:48 · 2288 阅读 · 0 评论 -
Spring MVC @RequestBody 400/415错误和几种$.ajax格式
在一个Controller里面加了@RequestBody注解 @PostMapping("/test") public Map<String, Object> test(@RequestBody User user) { System.out.println("test"); return new DataReturnMap("user", user)原创 2016-11-30 11:03:56 · 5532 阅读 · 1 评论 -
Shiro使用RememberMe添加数据到Session
首先来理清一下session和rememberMe的功能,session是大家比较熟悉的功能,因为HTTP协议是无状态的,网站为了在多个请求之间传递数据就使用了session这个东西,session是存储在网站服务器上的某个地方,比如内存、数据库或者其他的什么东西,在我的配置中是用Ehcache存储的,因为我使用了Shiro的Native Session Manager,替代了Tomcat本身的Se原创 2016-12-06 13:06:12 · 5074 阅读 · 1 评论 -
Spring @Transactional注解出错:CglibAopProxy - Unable to apply any optimisations to advised method < >
在原来的程序基础上加了Shiro框架之后再使用@Transactional注解会莫名其妙地出现这个错误,日志大概如下:2016-11-03 22:34:25 DEBUG DefaultListableBeanFactory:221 - Creating shared instance of singleton bean 'manageSiteService'2016-11-03 22:34:25原创 2016-11-03 22:57:40 · 8135 阅读 · 0 评论 -
IDEA JRebel热部署插件免费使用方法
本文使用的是IDEA 2016.1.3版本,先在File->Settings->Plugins->Browse Repositories,然后搜索JRebel,安装JRebel for Intellij。然后就是激活的问题了。JRebel有一个免费获得永久使用权的方法(不是破解),登录https://my.jrebel.com这个网站,然后用Twitter或者Facebook账号登录这个网站,就能获原创 2016-06-30 12:46:37 · 15531 阅读 · 17 评论 -
Spring MVC多个文件上传
在Spring的控制器中使用MultipartFile file来接收文件,通过MultipartFile[] files接收多个文件上传。首先添加文件上传的依赖:<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3原创 2016-07-14 09:10:20 · 5709 阅读 · 1 评论 -
Spring MVC @PathVariable注解最好显式地指定参数
默认情况下,Java类的反射对象并未包含方法入参的名称,如果编译时打开debug开关(javac-debug=no),则方法入参名也会记录到类的反射对象中,所有如果@PathVariable注解后面不指定参数的时候,要命 方法的入参成功绑定URL中的占位符参数,必须在编译时打开debug开关。不过编译时打开debug开关会使目标类变大,对运行效率也有一定的负面影响。正式编译部署时往往将此开关取消,所原创 2016-06-28 22:03:10 · 2731 阅读 · 0 评论 -
JdbcTemplate RowMapper没有把返回的数据填充到POJO里面
测试程序的时候发现使用jdbcTemplate执行select * from user where id = ?语句时最后返回给前端的数据少了数据库中的一个字段,经过调试却发现数据已经被成功地填充到了resultSet里面,尝试了几下,最后发现是该POJO的构造函数中虽然写了这个参数,但是在函数中却忘了把这个参数赋给POJO的相应字段。修改后即可。原创 2016-07-05 14:23:52 · 647 阅读 · 0 评论 -
Tomcat 8 .war文件部署出错
在本地生成.war文件之后上传到服务器的tomcat webapps目录下,tomcat会自动把.war文件解压并生成一个web应用。访问时却出现这样的错误。org.apache.jasper.JasperException: java.lang.IllegalStateException: No output folder org.apache.jasper.servlet.JspServ原创 2016-07-05 16:38:07 · 1669 阅读 · 0 评论 -
使用p6spy 2监控及打印Spring 4 JdbcTemplate生成的SQL语句
有时在调试代码的时候需要跟数据库打交道,这时如果知道数据库执行的是什么样的语句,好多问题就迎刃而解了,而p6spy正是这样的一个数据库监控工具。在Spring应用中使用p6spy时,需要在项目中添加一个spy.properties文件,其中常用的设置有以下几项:driverlist=com.mysql.jdbc.Driverreloadproperties=truelogfile = D:\\sp原创 2016-07-06 00:26:58 · 2401 阅读 · 0 评论 -
Spring MVC后台接收不到POST请求的参数
使用jQuery从前端向后台发送JSON数据,设置了Content-Type为application/json,同时在Spring MVC的Controller里面使用了@RequestParam注解来接收参数,但是只在GET请求的时候才能正常访问,在使用POST请求的时候会产生找不到参数的异常。原因是,jQuery发送的数据是用&符号连接起来的,像是这种:,对应的Content-Type是 app原创 2016-06-22 16:20:17 · 37134 阅读 · 0 评论 -
Spring MVC将异常映射到HTTP状态码
在自定义的异常类上使用@ResponseStatus更改当请求产生异常时返回的HTTP状态码时产生了问题,虽然异常仍然被@ExceptionHandler注解的异常处理方法拦截了,但是产生的状态码仍然是200。解决方法是将@ResponseStatus注解移到异常处理方法上,如@ControllerAdvice@RestControllerpublic class CustomException原创 2016-06-22 18:39:04 · 7671 阅读 · 1 评论 -
IDEA 16 JRebel Spring Tomcat热部署
先参照这篇博客的方法获得JRebel的License,然后需要注意的地方有以下几个点:使用JRebel Run或者JRebel Debug启动使用war:exploded来部署程序,不然没法执行下一条的步骤Run Configuration里面把On Update Action和On frame deactive都设置成Update resourses and classes然后就可以更改J原创 2016-06-30 19:43:00 · 2362 阅读 · 0 评论 -
MySQL自动断开连接的解决方法
有时web程序会出现这样的错误:<!DOCTYPE html><html><head><title>Apache Tomcat/8.0.36 - Error report</title><style type="text/css">H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-siz原创 2016-07-18 09:22:24 · 6831 阅读 · 0 评论 -
Spring 5 Reactive WebClient 添加请求及响应的interceptor
Spring 5 Reactive WebClient 添加请求及响应的interceptor百度鹰眼返回的数据使用WebClient发送时不知道为什么是text/javascript类型的,所以想在webclient上添加一个拦截器,把response header的content-type修改成application/json。本来以为只是一个 函数调用的事,在stackoverflow上面...原创 2018-11-22 14:36:39 · 4127 阅读 · 1 评论