![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
主要说spring的使用以及原理的东西包含IOC、DI、AOP、TX、MVC
该码就码
这个作者很懒,什么都没留下…
展开
-
spring基本使用(27)-springMVC11-SpringMVC的全局异常处理器
1、全局异常处理器的使用方式:@ControllerAdvice(basePackages = {"com.wzy"})public class GlobelExceptionHandler { @ExceptionHandler(value = BusinessException.class) @ResponseBody public MyResponse handlerException(BusinessException e){ return MyRe原创 2020-09-07 17:33:17 · 244 阅读 · 0 评论 -
spring基本使用(26)-springMVC10-SpringMVC的视图解析器ViewResolver
1、什么是视图解析器?视图解析器的作用是啥?视图解析器在整个请求的的过程中执行时机在哪里? 答:视图解析器就是SpringMVC中定义视图的信息解析的组件。 视图解析器的作用就是根据视图名称viewName + 本地化信息Locale来解析出一个View视图。 视图解析器的执行时机在,HandlerMappingAdapter执行结束后会得到一个ModelAndView类型的实例,然后视图解析器会根据这个ModelAndView中封装的信...原创 2020-09-07 14:51:45 · 265 阅读 · 0 评论 -
spring基本使用(25)-springMVC9-SpringMVC的返回值处理器HandlerMethodReturnValueHandler
1、什么是返回值处理器?它的作用是啥?在请求的什么阶段工作? 答:在SpringMVC中返回值处理器用接口HandlerMethodReturnValueHandler表示。它的作用就是可以操作HandlerMethod也就是我编写的Controller中的某方法执行的返回值,至于怎么操作就是看这个返回值处理器的业务了。返回值处理器的工作时机是在Controller中方法返回后就立即执行。2、HandlerMethodReturnValueHandler接口定义以及类图关系publi...原创 2020-09-04 17:36:46 · 552 阅读 · 1 评论 -
spring基本使用(24)-springMVC8-SpringMVC的校验器Validator
1、JSR-303校验规范,应该叫约束constraints 改约束主要定义的很多约束注解,如下图: 这些注解就是规范,那么谁来解析这个注解呢?当然是校验器,Java没有帮我们实现校验器,因此只能去找了,比较有名的校验器就是hibernate-validator,别想了这个东西跟orm 框架Hibernate没半毛钱关系,hibernate-validator不仅仅支持JSR-303的约束,自己还扩展了一些约,并实现了校验的业务功能。2、在sp...原创 2020-09-01 18:34:34 · 514 阅读 · 0 评论 -
spring基本使用(23)-springMVC7-SpringMVC九大组件之本地化解析器LocaleResolver原理剖析
1、什么是本地解析器? Java中有一个表示本地化的一个类java.util.Locale 这个类就是用来表示当前程序的执行所在地,这个类主要描述的是本地的语言、国际信息,比如中国对应的Locale实例就是 语言lang=zh ,country=CN 这样一个Locale实例就表示中国本地。 在程序中如何动态感知到当前程序的执行所在地信息是啥呢?这个时候就需要我们使用一个参数来进行动态获取,这就是SpringMVC中LocaleResolver的主要作用,也就是提供了国际化的...原创 2020-08-26 18:00:04 · 640 阅读 · 0 评论 -
spring基本使用(22)-springMVC6-SpringMVC九大组件之处理器映射器HandlerAdapter
1、前面一篇文章我们讲解了HandlerMapping的主流实现RequestMappingHandlerMapping处理器映射器,今天来剖析HandlerAdapter。RequestMappingHandlerMapping是主流使用的,那么对应肯定也有一个主流使用的RequestMappingHandlerAdapter,这个只是猜测,那么我们来spring-webmvc的源码中找一下看看,果不其然我们找到了如下图: 没毛病,这就是目前主要使用的HandlerAdapter的实现。..原创 2020-08-07 18:35:42 · 443 阅读 · 0 评论 -
spring基本使用(21)-springMVC5-SpringMVC九大组件之处理器映射器HandlerMapping
1、前面在将组件初始化的时候我们通过SpringMVC的组件驱动<mvc:annotation-driven />注册了一个类型是 RequestMappingHandlerMapping.classRequestMappingHandlerMapping处理器映射器返回的HandlerExecutionChain中的Handler类型是HandlerMethod.class 也就是我们在Controller中使用@RequestMapping注解定义的方法,那么Reque原创 2020-08-04 17:24:42 · 367 阅读 · 0 评论 -
spring基本使用(20)-springMVC4-SpringMVC九大组件之文件上传解析器MultipartResolver
1、在前面一篇文章中我们讲解了DispatcherServlet的工作流程,第一步会检查是否是文件上传请求,其源码提现如下: processedRequest = checkMultipart(request); protected HttpServletRequest checkMultipart(HttpServletRequest request) throws MultipartException { 如果DispatcherServle.原创 2020-07-31 17:25:32 · 690 阅读 · 0 评论 -
spring基本使用(19)-springMVC3-SpringMVC的前端控制DispatcherServlet的工作原理
1、前面我们花了两篇文章把SpringMVC的初始化流程讲了一遍,今天我们正式进入到SpringMVC的各大组件剖析,我们第一剖析的就是这个SpringMVC的前端控制器DispatcherServlet。2、DispatcherServlet工作流程解析 2.1、DispatcherServlet是一个标准的Servlet, 那么它肯定实现的Servlet的标准方法: void service(ServletRequest var1, Servlet...原创 2020-07-31 10:17:31 · 170 阅读 · 0 评论 -
spring基本使用(18)-springMVC2-SpringMVC九大组件的初始化原理分析
1、上篇博客讲到了SpringMVC的九大组件初始化,我们只看到了在什么时候初始化,并没有进行详细的原理分析,今天我们就来分析一下SpringMVC的九大组件是如何初始化的??????。 在DispatcherServelt中: protected void initStrategies(ApplicationContext context) { 1、初始化文件上传解析器 this.initMultipartResolver(contex...原创 2020-07-30 11:29:54 · 361 阅读 · 0 评论 -
spring基本使用(17)-springMVC1-SpringMVC环境中容器加载原理分析以及DispatcherServlet的初始化原理分析
1、SpringMVC的整体结构图 组件说明: 1.1、DispatcherServlet前端控制器 Ⅰ、这个组件知名度应该是蛮高的,其实它就是一个Servlet,我们来看看DispatcherServlet类图: Ⅱ、DispatcherServlet既然是一个标准的Se...原创 2020-07-27 15:20:21 · 178 阅读 · 0 评论 -
spring基本使用(16)-springtx的使用以及原理2 基于注解@Transactional声明式事务原理解析
1、基于注解@Transactional声明事务的使用方式 1.1、在xml中添加如下: <tx:annotation-driven transaction-manager="transactionManager" order="1" mode="proxy" proxy-target-class="true"/> transaction-manager:指定事务管理器名称 order:指定事务切面的顺序,越小表示...原创 2020-07-20 12:08:03 · 375 阅读 · 0 评论 -
spring基本使用(15)-springtx的使用以及原理1 基于xml声明式事务原理解析
1、事务的基本知识点: 1.1、事务的特性: A(原子性 Automic) C(一致性 Consistency) I(隔离性 Isolation) D(持久性 Duration) 1.2、数据并发问题 1、脏读:A事务读取B事务尚未提交的更改数据。 2、不可重复读:同一个事务...原创 2020-07-16 17:05:23 · 573 阅读 · 1 评论 -
spring基本使用(14)-springAOP的使用以及原理4 springAOP的aop命名空间
1、SpringAOP的aop命名空间的基本使用 1.1、非AspectJ注解的使用形式 目标bean定义 <bean id="aopNameSpaceTestBean" class="com.wzy.springstudy.aop.AutoProxyCreator.aopnamespace.AopNameSpaceTestBean"/> aspect bean定义 非注解方式,就是普通的类 <bean id="aspectJBean" class="c...原创 2020-07-14 15:32:11 · 599 阅读 · 0 评论 -
spring基本使用(13)-springAOP的使用以及原理3 springAOP的自动代理创建器AbstractAutoProxyCreator
1、在前面一篇文章中我们讲了ProxyFactory、ProxyFacoryBean、AspectJProxyFactory三种用于创建代理类以及代理实例的非自动代理创建器,在Spring中其实也为我们提供了自动创建代理器。自动代理创建器的作用就是,自动解析到SpringIOC容器中的切面,根据切面的定义找到所有的Target目标类,在SpringIOC容器装载阶段为其织入切面定义中的增强。2、非自动代理构建器 与 自动代理构建器的区别 非自动代理构建器使用繁琐,组要我们配置(目标类...原创 2020-07-14 11:05:59 · 462 阅读 · 0 评论 -
spring基本使用(12)-springAOP的使用以及原理2 SpringAOP提供的代理技术剖析
1、Advice:增强描述接口,spring提供的增强(Advice) Spring只提供方法级别的连接点增强,所以以下说的增强全部是方法级别的增强。 1.1、方法before增强MethodBeforeAdvice 顾名思义方法前置增强就是在方法执行之前织入增强的逻辑代码。 使用案例: public class UserServiceRegistryBeforeAdvice implements Meth...原创 2020-07-08 17:44:33 · 230 阅读 · 0 评论 -
spring基本使用(11)-springAOP的使用以及原理1 AOP的基本介绍
1、AOP含义 AOP 是Aspect Orinented Programing 意思就是“面向切面编程”。2、AOP术语(如连接点、切点等)Spring提供的AOP只是针对方法级别的切面编程,即连接点针对的都是方法。 2.1、连接点(Joinpoint) 一个类或者一段程序代码拥有一些具有边界性质的特定点即为连接点,不过spring仅仅支 持方法级别的连接点,即仅仅能在方法调用前、方法调用后、方法异常时候等等执行点镜 ...原创 2020-07-07 14:33:15 · 199 阅读 · 0 评论 -
spring基本使用(3)-基于Java类的配置BeanDefition(javaConfig)
1、概述 JavaConfig spring3.0开始使用 spring4.0成为核心普通的Java pojo只要标注 上注解@Configuration,就可以为spring容器提供bean的定义信息,每个 @Bean标注的函数都相当于提供一个Bean的定义信息。2、@Configuration使用方式一@Bean @Configuration public class BeanConfig { 如果没有配置name属性,则bean name 默认等于函数名称...原创 2020-07-04 23:17:24 · 212 阅读 · 0 评论 -
spring基本使用(10)-Spring是如何解决bean之间的循环依赖的
1、在之前我们说过,spring之间是允许bean之间相互依赖的,但是不能在构造函数执行期间相互依赖,因此当时给出的解决办法 是使用setter 的方式来依赖注入,那么在spring底层的实现里面是如何解决循环依赖的问题呢?今天我们针对这个问题,做一个详细的实现原理分析。2、演示案例说明:我们有一个用户服务UserService 、RoleService, 我们假设它两相互依赖,其代码如下: UserService:@Service@Order(1)public class ...原创 2020-06-22 16:18:53 · 290 阅读 · 0 评论 -
spring基本使用(9)-Spring的ApplicationEvent事件体系
1、Spring的ApplicationEvent:事件 ApplicationEvent:应用事件,职责为定义业务。 类图: Spring 提供了一个继承于java.util.EventObject 类的ApplicationEvent的的抽象类, 并提供了应用上线文事件的抽象实现ApplicationContextEvent 下面的容器关闭、刷新、 启动、停止等容器事件 以及RequestHandledEvent(http 请求处理完成事件),可自定...原创 2020-05-21 21:54:13 · 1369 阅读 · 0 评论 -
spring基本使用(8)-Spring对国际化的支持
1、Locale类-java.util.Locale Locale表示语言、国家/地区信息的本地化类。使用如下:// zh 表示中文的代码CN表示中国大陆的代码//参数就是语言代码国家地区的代码 可在网站可查询//1、带语言、国家地区的本地化实例Locale locale = new Locale("zh","CN");//2、只有语言信息的本地化实例Locale locale1...原创 2020-05-21 21:20:42 · 532 阅读 · 0 评论 -
spring基本使用(7)-Spring应用上下文刷新核心AbstractApplicationContext.Refresh()
1、容器技术内幕-AbstractApplicationContext.Refresh() AbstractApplicationContext : 是ApplicationContext的抽象类,里面的refresh()方法是容器加载的入口。 Refresh()方法的主要流程如下: 第1步:初始化BeanFactory。 ConfigurableListableBeanFactory beanFactory = obtainFre...原创 2020-05-20 00:11:26 · 346 阅读 · 0 评论 -
spring基本使用(6)-ApplicationContext中bean的生命周期
1、借用一张ApplicationContext中bean的生命周期流程图:2、ApplicationContext bean生命周期涉及组件说明: 2.1、 宣传宣传 被vvvvvv刚刚vvvv仍然突出v vv'b'b'n'n'n'c'ch'g'g'g'k'j'h'd'h'f'd'c原创 2020-05-18 23:27:31 · 387 阅读 · 0 评论 -
spring基本使用(5)-BeanFactory中bean的生命周期
1、借用一张BeanFactory中bean的生命周期流程图: ![BeanFactory生命周期流程图](https://img-blog.csdnimg.cn/20200517191004986.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0OTc4MTI5,size_16,color_FFFFFF,t_70)2、Be..原创 2020-05-17 19:26:38 · 177 阅读 · 0 评论 -
spring基本使用(4)-Code的方式动态添加BeanDefition以及bean实例到Spring容器当中
1、DefaultListableBeanFactory.registerBeanDefinition 此函数可动态向容器注册BeanDefinition。 如下代码: classpath:spring-context.xml 中配置: <bean id="userDao" class="com.wzy.springstudy.UserDao"/> 向spring容器中注册bean BeanDefinition 以及获取bean实例代码: @Test原创 2020-05-17 19:07:26 · 333 阅读 · 0 评论 -
spring基本使用(3)-基于Java类的配置BeanDefition(javaConfig)
基于注解定义BeanDefinition1、概述 JavaConfig spring3.0开始使用 spring4.0成为核心普通的Java pojo只要标注上注解@Configuration,就可以为spring容器提供bean的定义信息,每个@Bean标注的函数都相当于提供一个Bean的定义信息。2、@Configuration使用方式一@Bean @Configuration public class BeanConfig { //如果没有配置name属性,则bea原创 2020-05-17 17:26:45 · 215 阅读 · 0 评论 -
spring基本使用(2)-基于注解定义BeanDefinition
基于注解定义BeanDefinition1、使用注解将BeanDefinition注册到spring容器 1.1、@Component注解 @Component("car") public class Car { private String name; private String price; Get set 省略 } 以上配置等价于: <bean id="car原创 2020-05-17 17:04:07 · 371 阅读 · 0 评论 -
spring基本使用(1)-基于XML定义BeanDefition
1、bean 标签基于id (推荐)配置说明:id 必须全局唯一且只能以字母开头,同一个bean可以配置多个id, 如下:分隔符可以为逗号、空格、分号。获取bena方式:getBean(“foo”)getBean(“123”) …2、bean 标签基于name 配置(不推荐)配置说明:name无需全局唯一且格式格式不受限制,如果有两个bean name一样,在getBean的时候...原创 2020-04-13 10:55:09 · 288 阅读 · 0 评论