SSH之Spring
文章平均质量分 76
吴法刚
从现在我下了一个决定把自己学习过的东西都写成文章发表出来,大家共同学习共同探讨,知识无边界。。欢迎交流技术
展开
-
spring工具-StopWatch使用介绍
StopWatch是Spring核心包中的一个工具类,它是一个简单的秒表工具,可以计时指定代码段的运行时间以及汇总这个运行时间,使用它可以隐藏使用 System.currentTimeMillis() ,提高应用程序代码的可读性并减少计算错误的可能性。StopWatch对象不是设计为线程安全的,并且不使用同步。一般是在开发过程中验证性能,而不是作为生产应用程序的一部分。原创 2023-09-21 07:36:55 · 492 阅读 · 0 评论 -
Spring 事件相关知识ApplicationEvent
Spring 事件驱动模型是 Spring 框架中的一个组成部分,它提供了一种基于事件的方法来驱动应用程序的演化。Spring 事件驱动模型基于观察者模式 (Observer Pattern) 和发布 - 订阅模式 (Publish-Subscribe Pattern),它允许应用程序中的组件之间相互通信,并且可以在需要的时候自动触发事件以通知其他组件。原创 2023-05-27 23:09:09 · 997 阅读 · 0 评论 -
一文吃透spring aop底层原理
一文吃透spring aop底层原理前言回顾ioc容器 初始化过程从@EnableAspectJAutoProxy看起AnnotationAwareAspectJAutoProxyCreator 上下继承关系如下invokeAwareMethodsapplyBeanPostProcessorsBeforeInitializationinvokeInitMethodsapplyBeanPostProcessorsAfterInitialization小结aop创建对象原理beanpostProcessor 工原创 2021-11-28 18:30:25 · 6065 阅读 · 1 评论 -
spring源码:@Import 注解
前言根据这个名字我们不难猜的,就是导入一些信息, spring中能导入什么,无非就是导入一些类信息,进而让spring识别到转化成BeanDefinition 装入beanDefinitionMap中,这样一说好像和@Component @Service 等等没啥区别了,其实不然,这个@Import导入的类处理的比较前置,甚至处理一些BeanFactory一些信息,比如springboot中@EnableXXX 都是这么处理接口信息@Target(ElementType.TYPE)@Retentio原创 2021-11-28 13:31:13 · 411 阅读 · 0 评论 -
一文彻底学会spring循环依赖
一文彻底学会spring循环依赖概念前提条件我们在哪源码分析真正的开始 getBeanpublic Object getSingleton(String beanName, ObjectFactory<?> singletonFactory)Object sharedInstance = getSingleton(beanName)实例创建小结面试题概念循环依赖:顾名思义就是相互存在依赖关系,我们是为了学习源码这里就不太多的啰嗦了, 大家一定有一个比较深入的了解前提条件需要知道ioc容器原创 2021-11-14 18:34:25 · 2102 阅读 · 0 评论 -
spring 是如何解决循环依赖的?
何为循环依赖自己依赖自己两个对象相互依赖多个对象依赖成一圈循环依赖得场景public class A { private B b; public A(B b) { this.b = b; } public B getB() { return b; } public void setB(B b) { this.b = b; }}public class B { public B(A a) { this.a = a; } public A get原创 2021-11-14 18:32:50 · 906 阅读 · 2 评论 -
spring5和spring4 日志新特性
spring5和spring4 日志新特性一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-09-08 13:38:16 · 1033 阅读 · 0 评论 -
spring缓存那点事
缓存介绍缓存是实际工作中非经常常使用的一种提高性能的方法, 我们会在很多场景下来使用缓存。本文通过一个简单的样例进行展开,通过对照我们原来的自己定义缓存和 spring 的基于注解的 cache 配置方法,展现了 spring cache 的强大之处,然后介绍了其主要的原理,扩展点和使用场景的限制。通过阅读本文。你应该能够短时间内掌握 spring 带来的强大缓存技术。在非常少的配置下就可以给既有代码提供缓存能力。Spring 3.1 引入了激动人心的基于凝视(annotation)的缓存(cache原创 2021-08-28 16:26:39 · 172 阅读 · 0 评论 -
Spring AOP Aspect Instantiation Models 切面实例化模型
默认情况下,在Spring AOP里面的切面类是单例模式(Singleton),也就是说我们声明的Aspect类只能实例化一个对象出来使用。但是假设我们使用的切面类里面有公共对象或者变量需要操作,或者应用于多线程环境,单例模式的切面类显然就不能满足我们的要求了。那么我们应该怎么做才能给每一个切面都创建一个单独的实例呢?Aspect Instantiation Models这一章节的直接翻译就是切面实例化模型,首先还是看看官网怎么说的,以下引用来自官网:By default, there is a s原创 2021-04-24 18:48:03 · 267 阅读 · 0 评论 -
SpringAop在已有的目标类中我们想植入一些业务逻辑如何实现
在看此文章之前,你可能已经知道了,spring是通过Before、After、AfterRunning、AfterThrowing以及Around 共5中通知方式为目标方法增加切面功能,比如一个需要在目标类执行一个目标方法之前和之后分别打印一份日志,就可以建立一个切面在这个方法前后打印日志。但是如果我想在此目标类中再增加一个目标方法是,该怎么办呢?最简单的办法就是在建立此目标类的时候,增加此方法。但是如果原目标类非常复杂,动一发而牵全身。我们可以为需要添加的方法建立一个类,然后建一个代理类,同时代理该类和原创 2021-04-24 17:34:17 · 166 阅读 · 0 评论 -
京东项目中aop的使用
今天梳理了下项目中使用的价格aop相关的点,今天用些时间抽离出来,给大家学习,代码是我脱敏之后的,为了安全为了我的前途我只能这样,大家学到其中的技术点就可以实例1 接口防重在互联网中都是前后端分离,后端提供的api怎么防重?...原创 2021-04-24 16:31:26 · 174 阅读 · 0 评论 -
SpringAop环绕通知和JoinPoint and ProceedingJoinPoint
Proceedingjoinpoint 和JoinPoint的区别:Proceedingjoinpoint 继承了JoinPoint,proceed()这个是aop代理链执行的方法。并扩充实现了proceed()方法,用于继续执行连接点。JoinPoint仅能获取相关参数,无法执行连接点。JoinPoint的方法1.java.lang.Object[] getArgs():获取连接点方法运行时的入参列表;2.Signature getSignature() :获取连接点的方法签名对象;3.java.原创 2021-04-24 16:15:29 · 1515 阅读 · 0 评论 -
spring aop中this和target区别
前置条件其实考虑这个问题的时候必须知道springaop 中存在2中代理,一个是jdk代理,一个cglib代理,并且这两者是有区别的,首先知道的一点,jdk代理是目标对象实现接口,也就是说jdk代码是基于接口的方式同样一个问题:jdk代理,目标对象能继承一个父类,而不实现接口吗?为什么?jdk代理生成代理对象这里我们编写一生成的代码片段如下截图public class Test { public static void main(String[] args) throws IOExcept原创 2021-04-24 15:38:33 · 1662 阅读 · 0 评论 -
Spring Resource
Resouce介绍资源管理在工作中我们平时并不怎么用,一般都是写好的,我们也没有深究过其中的原理,今天我就看着spring官方文档结合源码看看这一块的知识进行一个梳理.Resource接口在org.springframework.core.iopublic interface Resource extends InputStreamSource { boolean exists(); default boolean isReadable() { return this原创 2021-03-28 10:54:39 · 170 阅读 · 0 评论 -
Spring中ApplicationContextAware的作用
ApplicationContextAware 通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法。我们在ApplicationContextAware的实现类中,就可以通过这个上下文环境对象得到Spring容器中的Bean。看到—Aware就知道是干什么的了,就是属性注入的,但是这个ApplicationContextAware的不同地方在于,实现了这个接口的bean,当spring容器初始化的时候,会自原创 2021-01-19 11:11:57 · 441 阅读 · 0 评论 -
Spring publishevent事件处理
spring 我们虽然经常用但是我们发现还是有很多不怎么用的功能,今天发现这么一个功能,所以决定记录下他的使用,spring源码分析的时候的再看源码,这个地方是使用的事件监听,设计模式应该是和观察者模式有关,这个地方我还没来得及看源码,先写写使用的方法吧,毕竟使用还是很简单的;使用场景这个一般什么时候使用,我们一般是在不同的bean直接进行信息传递,比如我们beanA的事件处理完后,需要beanB进行处理一些业务逻辑的时候这种情况就一般可以使用publish-event解决原理其实事件模型我们并不陌原创 2021-01-17 23:16:42 · 16791 阅读 · 3 评论 -
spring源码阅读之BeanDefinition
spring源码阅读之BeanDefinition前言BeanDefinition的集成关系BeanDefinitionAnnotatedBeanDefinitionConfigurationClassBeanDefinitionAnnotatedGenericBeanDefinitionScannedGenericBeanDefinitionAbstractBeanDefinitionRootBeanDefinitionGenericBeanDefinitionChildBeanDefinition前言原创 2021-01-02 17:21:55 · 194 阅读 · 0 评论 -
spring源码阅读之BeanPostProcessor
spring之BeanPostProcessorBeanPostProcessor 简介自定义BeanPostProcessor配置多个BeanPostProcessor如何保证顺序spring 内部是如何使用的spring提供了哪些默认的BeanPostProcessorBeanPostProcessor 简介该接口我们也叫后置处理器,作用是在Bean对象在实例化和依赖注入完毕后,在初始化方法的前后添加我们自己的逻辑。注意是Bean实例化完毕后及依赖注入完成后触发的。接口的源码如下/** * Be原创 2021-01-02 17:20:37 · 237 阅读 · 2 评论 -
spring源码阅读之 BeanFactoryPostProcessor
前言Spring中BeanFactoryPostProcessor和BeanPostProcessor都是Spring初始化bean时对外暴露的扩展点。两个接口从名字看起来很相似,但是作用及使用场景却不同。前面我们已经大致了解了BeanPostProcessor的作用,可以点击spring源码阅读之BeanPostProcessorSpring IoC容器允许BeanFactoryPostProcessor在容器实例化任何bean之前读取bean的定义(配置元数据),并可以修改它。同时可以定义多个Be原创 2021-01-02 17:19:09 · 182 阅读 · 0 评论 -
常用注解 @Component @controller @service @repository 注解的解析
@Component注解的解析今天在写程序的时候看见一个以前没有见过的注解(@Component),在网上查找过后,经过实践,决定把它记录下来。1、@controller 控制器(注入服务)用于标注控制层,相当于struts中的action层2、@service 服务(注入dao)用于标注服务层,主要用来进行业务的逻辑处理3、@repository(实现dao访问)用于标...原创 2019-08-31 16:25:49 · 379 阅读 · 0 评论 -
Spring的@bean注解
今天看产品代码发现一处使用@Bean, 从字面上理解应该就是bean 注入,但是怕理解偏了所以还是查询了下资料@Bean public WebSocketHandler infoHandler() { return new WebSocketHandler(); }代码解释1.我们使用的是Java配置的方式和注解混合配置。没有使用xml配置加注解的方式,Ja...原创 2020-04-05 06:20:11 · 192 阅读 · 0 评论 -
springmvc+spring+mybatis整合 idea版
最近公司要开发新项目记录下过程:给大家一个参考,优美不优美大家自己评论创建maven项目当然jdk 根据自己的需要选择版本,我现在一直用的1.8groupid 一般公司域名倒着写 artifactID 项目名称也可以groupid 公司域名加项目名称用.分隔,artifactid用-分隔maven选择新建项目完成整合顺序1.spring为核心 我们先添加spring的支持...原创 2020-03-22 15:05:48 · 785 阅读 · 0 评论 -
使用idea和gradle编译spring5源码
spring对Java开发小伙伴没有陌生的,基本大家都在用,但是针对源码进行了解的可能就不再多说了,我们一般是使用的jar包的形式进行引用spring,作为一个多年的开发经验的我们,不了解spring底层是怎么写的有点可惜,底层优雅的代码值得我们慢慢品味!好了现在我们先把spring的源码搭建到我们本地,进行编译,调试spring项目:spring项目使用的不是maven管理,而是gradle所...原创 2020-02-29 07:27:38 · 1358 阅读 · 4 评论 -
Spring 事务管理基础知识
事务的概念:并发带来的问题:脏读,幻读,不可重复读事务分类: 分为基于数据库事务,和数据库连接的事务程序事务分布式事务本地事务spring的事务使用步骤:1.获取数据库连接:所有企业都实现datasource接口,来获取connection对象2.开启事务3. 执行4.事务提交或者回滚5.事务关闭此处先声明:spring自身没有实现事务...原创 2020-01-13 14:50:38 · 178 阅读 · 0 评论 -
spring学习之五(spring aop编程)
在了解这个之前个人感觉应该了解下反射,代理模式,动态代理等相关的内容比较好理解不然即使做出来效果感觉也不理解。动态代理本身感觉就有点难理解如果不太明白的可以参考下面的3个文章有便于理解相关内容: 《Javase 专题之 反射和动态代理》 《Javase 专题 反射和动态代理 aop》AOP(面向方面编程) AOP 是什么 AOP的全称是Aspect-Oriented Programmin原创 2017-03-16 07:43:43 · 496 阅读 · 0 评论 -
spring 学习之四(spring的注入方式(xml和annotation))
spring 的注入方式:xml 这个在项目中的使用比较简单,结构也比较明了。代码的可读性高,但是代码量要远远大于annotation的方式。所以一般情况下。小项目,中型项目都用annotation来完成,但是大型项目一般用xml方式,虽然这样beans文件非常大,但是为了可读性也只能这么处理; xml的注解方式非常简单这里把代码直接贴出来了:<?xml version="1.0" encodin原创 2017-03-15 07:39:54 · 3008 阅读 · 0 评论 -
spring 学习之三(spring 与hibernate, struts2整合)
spring 学习二(spring 与hibernate, struts2整合) 如果不会可以参考《Strust2学习之一(struts2 环境搭建)》原创 2017-03-11 11:27:59 · 259 阅读 · 0 评论 -
Spring 学习之二(Spring 和 hibernate 整合)
Spring 学习之二(Spring 和 hibernate 整合) 如果你不明hibernate的搭建可以原创 2017-03-11 07:48:56 · 315 阅读 · 0 评论 -
Spring 学习之一(了解spring)
1,什么是spring框架spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对JavaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,ibatis框架等组合使用 Struts MVC 表示层 Spring IOC(DI),AOP Hibernate ORM(对象-关系映射) 持久化层(数据处理层)原创 2017-03-11 07:42:01 · 372 阅读 · 2 评论