Spring
半笙彷徨
追求自我,超越自我
展开
-
Spring MVC之@RequestBody, @ResponseBody 详解
引言:接上一篇文章讲述处理@RequestMapping的方法参数绑定之后,详细介绍下@RequestBody、@ResponseBody的具体用法和使用时机;简介:@RequestBody作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上; ii) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。使用时机:A)转载 2021-08-15 20:28:46 · 454 阅读 · 0 评论 -
SpringMVC-请求参数注入-基本类型参数注入源码探讨
前言这篇文章分享SringMVC处理请求流程中的一个环节,注入请求参数值,请求参数注入是DispatcherServlet接收并处理请求的流程其中的一个环节,最后选取最基础的参数解析器RequestParamMethodArgumentResolver,了解注入其如何注入基本类型,如int、String等。Spring Version:5.0.6.RELEASE Spring MVC V...原创 2018-08-12 20:02:20 · 4836 阅读 · 0 评论 -
Spring-Lazy-init源码探讨
在Spring中,使用azy-init="true"可以延迟实例化bean,等待调用bean时再实例化bean。本文记录Spring如何实现延迟实例化。Spring版本:5.0.4测试代码package cn.wzx;import cn.wzx.model.Student;import org.springframework.context.ApplicationContext;i...原创 2018-10-18 19:02:45 · 389 阅读 · 0 评论 -
SpringMVC-web服务端测试
测试SpringMVC中controller,demo项目采用spring boot方式搭建,依赖使用maven。pom.xml<parent> <groupId>org.springframework.boot</groupId> <artifactId>spr原创 2018-09-30 15:21:55 · 972 阅读 · 0 评论 -
Spring-AOP源码探讨-匹配bean通知
说明使用<aop:aspectj-autoproxy />声明式注解风格配置切面,其自动为spirng容器中符合条件的bean创建代理对象匹配通知(Advisor)内部流程。配置:<aop:aspectj-autoproxy />aop命名空间中aspectj-autoproxy的解析类是AspectJAutoProxyBeanDefinitionParser。其...原创 2019-03-29 21:54:59 · 403 阅读 · 0 评论 -
Spring-AOP源码探讨-创建bean代理对象&代理方法执行流程
在上一篇中梳理了匹配bean通知(Advisor)的流程。这篇延续上篇,梳理创建bean代理对象源码。先回顾下AbstractAutoProxyCreator类的wrapIfNecessary方法:/** * Wrap the given bean if necessary, i.e. if it is eligible for being proxied. * @param bean ...原创 2019-03-29 23:00:16 · 791 阅读 · 0 评论 -
Spring-@Transactional源码分析
在spring配置文件添加<tx:annotation-driven />启用注解式事务管理,接着在需要事务管理的类或方法上添加@Transactional注解,就能实现事务管理。本篇内容分析该实现背后源码。上面两个注解在spring-tx包中:<dependency> <groupId>org.springframework</groupI...原创 2019-03-30 15:55:03 · 384 阅读 · 0 评论 -
Spring-bean循环依赖
循环依赖指的是两个或以上bean相互存在引用。Spring中循环依赖的几种情况:1.构造器参数循环依赖;无法解决,只能避免2.setter方式,单例;3.setter方法,prototype原型;无法解决,只能避免在bean初始化一文中,可以知道,创建bean需要经过一下几个步骤:1.实例化bean;2.populate bean,填充bean的属性;3.initialize be...原创 2019-03-31 22:19:21 · 712 阅读 · 0 评论 -
Spingboot-使用AOP实现动态自动切换Mybatis数据源+分页
目标:使用AOP实现动态自动切换Mybatis数据源,分页插件使用PageHelper。项目使用Springboot搭建。application.yml配置文件server: port: 8086db1: datasource: url: jdbc:mysql://localhost:3306/demo?characterEncoding=UTF-8&chara...原创 2019-03-28 10:42:19 · 2313 阅读 · 0 评论 -
SpringMVC-请求参数注入-对象类型参数注入源码探讨
接着上一篇请求参数解析,本篇分析讲请求参数解析为对象属性的源码。demo基于springboot与上一篇稍微不同,这里的spring版本为5.1.5。controller@RestController@RequestMapping("/index")public class TestController { @GetMapping("/test") public St...原创 2019-04-21 23:12:08 · 3121 阅读 · 0 评论 -
Spring-component-scan源码探讨
前言在Spring配置文件中,可通过context:component-scan元素,指定包路径,Spring在创建容器时会扫描有注解@Component、@Repository、@Service、@Controller的类并注册bean到容器中,下面看看Spring源码实现原理。 Spring版本:5.0.6原理通过上一篇文章Spring-ClassPathXmlApplica...原创 2018-07-29 23:26:24 · 1415 阅读 · 0 评论 -
Spring-ClassPathXmlApplicationContext源码探讨-解析XML文件
前言使用ClassPathXmlApplicationContext作为Spring容器,可以在构造方法添加XML文件路径,创建Spring容器,将会解析XML文件的配置信息,下面看看解析XML流程。 Spring版本:5.0.6实例最原始的方式,创建Spring容器,代码:/** * @author wzx * @time 2018/7/29 */public clas...原创 2018-07-29 18:43:02 · 2016 阅读 · 5 评论 -
Spring中java.lang.NoClassDefFoundError: org/springframework/core/MethodIntrospector
使用Spring时出现如下异常:java.lang.NoClassDefFoundError: org/springframework/core/MethodIntrospector原因是spring-core包中没有这个类,我的版本是4.2.3以下,改成4.2.3或以上即可。 参考: https://github.com/spring-projects/spring-kafka/issu原创 2017-01-14 14:16:22 · 7923 阅读 · 0 评论 -
Java使用Velocity模板发送HTML格式邮件并解决中文乱码问题
项目中经常会遇到发送邮件的问题,有时还需要发送html格式的邮件,如果直接在java文件硬编码写html,那么维护起来将会非常麻烦,利用Velocity模板引擎可以解决这个问题,使得业务处理和视图渲染相分离,方便维护。项目依赖:<properties> <springframework>4.2.6.RELEASE</springframework></properties><depende原创 2017-01-18 18:26:28 · 3970 阅读 · 1 评论 -
springMVC之No mapping found for HTTP request with URI 问题
使用Spring MVC拦截所有请求时,如果设置如下:<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-nam原创 2017-03-28 15:40:58 · 858 阅读 · 0 评论 -
使用Spring注解方式注入properties文件乱码解决
使用Spring中的PropertiesFactoryBean读取配置文件内容,文件中有中文,出现了乱码,原因是没有设置fileEncoding属性,改成如下配置:<bean id="setting" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="原创 2017-03-13 12:22:43 · 1565 阅读 · 0 评论 -
Spring自带定时任务
Spring自带实现定时任务有两种方式,一种是通过注解的方式实现,一种是通过在配置文件中配置后实现。一、通过spring的注解( @Scheduled)1.task命名空间:xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/原创 2017-06-09 14:16:44 · 481 阅读 · 0 评论 -
SpringMVC解决跨域问题
有个朋友在写扇贝插件的时候遇到了跨域问题。 于是我对解决跨域问题的方式进行了一番探讨。问题 API:查询单词 URL: https://api.shanbay.com/bdc/search/?word={word} 请求方式: GET 参数: {word}, 必须,要查询的单词报错为XMLHttpRequest cannot load http://loc转载 2018-02-03 17:38:49 · 415 阅读 · 0 评论 -
Spring @Value之Spring EL解析List
环境: spring boot 2.0 jdk 1.8配置文件:# 自定义属性,可以在Controller中读取application.hello=Hello Shanhyapplication.age=21,22,23代码:@Value("#{'${application.age}'.split(',')}")private List<Integer> ...原创 2018-04-03 14:02:31 · 8783 阅读 · 3 评论 -
Quartz+Spring Boot实现动态管理定时任务
在实践中遇到动态管理定时任务的需求,场景通常是动态添加、更新、删除任务,借助Quartz,可方便实现功能。 以下使用Quartz结合Spring Boot方式使用。POM依赖&lt;parent&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;sp原创 2018-06-09 17:19:32 · 18701 阅读 · 10 评论 -
Spring-BeanPostProcessor接口总结
定义Spring提供了一个BeanPostProcessor接口,这个接口的作用在于对于新构造的实例可以做一些自定义的修改。比如如何构造、属性值的修改、构造器的选择。 如果想改变Spring容器中bean的一些属性或者行为,可以通过自定义类实现BeanPostProcessor接口实现。 以下基本Spring-beans 5.0.6版本说明。BeanPostProcessor@...原创 2018-06-17 00:39:47 · 1624 阅读 · 3 评论 -
Spring-Bean初始化源码探讨
前言针对 Spring 容器实例化 singleton bean 的主流程进行介绍;singleton bean 在 Spring 容器的启动过程中就进行初始化; Spring-beans version:5.0.6核心流程UML这边文档的内容:Spring 容器是如何对 Singleton bean 进行初始化并注册到当前容器;与之相关的主要有两个流程: 1. 解析 bean...原创 2018-06-24 23:47:02 · 346 阅读 · 0 评论 -
Spring-Core-Container @Autowired源码探讨
前言本文整理@Autowired注解背后源码处理机制@Autowired通过 @Autowired 注解注入 bean 的逻辑主要是通过 AutowiredAnnotationBeanPostProcessor bean-post-processor 实现AutowiredAnnotationBeanPostProcessorAutowiredAnnotationBea...原创 2018-07-01 00:05:38 · 4233 阅读 · 1 评论 -
SpringMVC接收不到前端参数原因分析
使用SpringMVC接收前端参数很方便,只要参数名和前端input名称一致即可,这种情况适用于传递的Content-type是【application/x-www-form-urlencoded】。有时需要使用传递文件或大文本类型的数据,这时请求头的Content-type是【multipart/form-data】,如: 如果使用SpringMVC作为前端控制器,需要在配置文件中添加multi原创 2017-01-12 15:38:31 · 3910 阅读 · 0 评论