![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
酱油砖家
我是酱油砖家 而不是酱油专家
展开
-
JPA添加唯一索引或唯一约束(Mysql测试通过 version 5.7)
------------------------------------------------------------------------------------------------网上提供的版本基本都是这个版本的居多,据网友测试说在oracle中测试是没问题的,在mysql中测试是失败的@Table(name = “表名”, uniqueConstraints = {@Uni...原创 2020-01-29 00:37:01 · 5542 阅读 · 0 评论 -
spring boot gateway 过滤器的执行顺序
spring boot gateway 过滤器的执行顺序前言学习官方文档,发现对于过滤器有分为三类默认过滤器 自定义过滤 全局过滤器于是就有一个疑问,关于这些过滤器的访问顺序是怎样的,今天就以一个demo来进行测试准备阶段过滤器工厂类以此为模板,复制出几份就可以了,注意打印信息,可区分就行public class ExampleGatewayFilterFact...转载 2020-01-23 03:09:33 · 826 阅读 · 0 评论 -
Spring基础(19)——AOP——定义Pointcut
Spring通过Pointcut接口描述切点,Pointcut由ClassFilter和MethodMather构成,通过ClassFilter定位到某些特定类上,也就是类过滤。通过MethodMather定位到某些特定的方法上,也就是方法过滤。Pointcut关系图:1、类过滤Pointcut根据方法和类决定在什么地方织入通知。ClassFilter接口决定了一个类是否符合通知的要求,Class...原创 2018-07-08 22:47:06 · 792 阅读 · 0 评论 -
Spring基础(14)——AOP——面向切面编程
1、切面:切面(Aspect)是指需要实现的交叉功能。是应用系统模块化的一个切面或领域。切面常见的例子是日志。系统中到处都需要使用日志记录,利用继承来重用日志模块不合适。然而,可以创建一个日志记录切面,在系统中通过使用AOP技术来应用。2、连接点:连接点(Joinpoint)是应用程序执行过程中插入切面的地点。这个地点可以是方法调用、异常抛出,或者是需要修改的字段。在这些地方将切面代码插入到应用流...原创 2018-07-02 22:45:24 · 157 阅读 · 0 评论 -
Spring基础(20)——AOP——静态PointCut
静态切入点只在代理创建时执行一次,而不是在运行期间每次调用方法时都执行,所以性能比动态切入点要好,是首选的切入点方式。在Spring中定义了两个静态切入点的实现类。StaticMethodMatcherPointcut:一个抽象的静态Pointcut,它不能被实例化。开发者可以根据自己扩展该类来实现自定义的切入点。NameMatchMethodPointcut:只能对方法名进行判别的静态Point...原创 2018-07-10 22:25:57 · 1268 阅读 · 0 评论 -
Spring基础(10)——基本Bean装配
1、使用XML进行装配基本结构<beans><bean id="" class=""><!-- 配置Bean及其协作者--><bean><!-- 配置更多的bean--></beans>使用Import加载<beans><import resourc原创 2018-06-29 01:10:05 · 125 阅读 · 0 评论 -
Spring基础(21)——AOP——动态PointCut
由于动态切入点除了要考虑方法的名称等静态信息外,还要考虑方法的参数。由于它是动态的,在执行时既要计算方法的静态信息,还要计算其参数,结果也不能被缓存。因此,动态切入点要消耗更多的系统资源。Spring提供的动态切入点的实现:ControlFlowPointcut:控制流程切入点。例如只有在某个特定的类或方法中调用某个连接点时,装备才会被触发,这时就可以使用ControlFlowPointcut,但...原创 2018-07-11 23:50:00 · 2295 阅读 · 0 评论 -
Spring基础(15)——AOP——BeforeAdvice
Spring运行时通知对象:代理Bean只有在第一次被系统需要时才创建。如果使用ApplicationContext,代理对象在BeanFactory载入所有Bean时被创建。因为Spring在运行时创建代理,所以使用SpringAOP不需要特殊编译器。Spring有两种代理创建方式。如果目标对象实现了一个或多个接口暴露的方法,Spring将使用jdk的java.long.Proxy类创建代理。这...原创 2018-07-05 23:32:26 · 648 阅读 · 0 评论 -
Spring基础(16)——AOP——AfterAdvice
AfterAdvice即后置通知,与前置通知用法相似,但是功能是想反的,后置通知是指在目标方法被调用后执行。实现后置通知必须实现AfterReturningAdvice接口,同前置通知一样,后置通知有机会得到调用的方法、传入的参数以及目标对象,亦可以获得被通知方法的返回值。这个接口返回的也是空值。虽然可以获得目标方法的返回值,但是不能替换返回值。与前置通知相同,改变执行流程的唯一方法就是抛出异常。...原创 2018-07-05 23:49:46 · 1082 阅读 · 0 评论 -
Spring基础(16)——AOP——AroundAdvice
Around Advice是环绕通知,是最常用的通知类型。前置通知和后置通知分别在目标类方法的前后织入通知,但是如果同时使用这两种类型的通知,使用环绕通知同样可以实现效果。MethodInterceor能够控制目标方法是否真的被调用。通过调用MethodInvocation.proceed()方法来调用目标方法。这一点不同于MethodBeforeAdvice,目标方法总是被调用,除非抛异常。能够...原创 2018-07-06 00:15:59 · 304 阅读 · 0 评论 -
Spring基础(22)——AOP——Introduction
引入与其他类型的通知有所不同,因为其他类型的通知是在方法调用的周围织入到不同的连接点,而引入会影响整个类,可以通过给需要消息的类添加方法和属性来实现。可以用一个已存在的类让它实现另外的接口,维持另外的状态(这也称为混合)。使用引入能够动态的建立符合对象,提供了多态继承的好处。实现introductionInterceptor:Spring通过一个特殊的方法拦截器接口IntroductionInte...原创 2018-07-22 20:22:09 · 491 阅读 · 0 评论 -
Spring基础(9)——Bean的生命周期——ApplicationContext中Bean的生命周期
开始->调用BeanFactoryPostProcessor的postProcessBeanFactory方法对工厂定义信息进行后处理->调用InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation()方法->实例化->调用InstantiationAwareBeanPostProcessor的po...原创 2018-06-27 00:15:50 · 192 阅读 · 0 评论 -
Spring基础(8)——Bean的生命周期——BeanFactory中Bean的生命周期
1、定义BeanBean定义包括的内容如下:全限定类名:通常是Bean的真正实现类,但是如果一个Bean使用一个静态工厂方法创建,而不是由普通的构造方法创建,那么这实际上就是工厂类的全限定名Bean行为配置元素:声明这个Bean在容器中的行为方式,例如:prototype或singleton,自动装配模式、依赖模式检查、初始化和析构方法;构造方法的参数和新创建Bean需要的属性:例如一个管理连接池...原创 2018-06-26 23:59:01 · 193 阅读 · 0 评论 -
Spring基础(1)——Spring简介
很多东西可能用的比较老的,跟不上时代的发展和进步,但是基础都是想通相似的。但是,我想能作为教材进入大学课堂的知识,虽然可能会有写偏差,应当不是太严重把。Spring致力于J2EE应用各层的解决方案,而不是仅仅专注于某一层,Spring是企业应用开发的一站式选择。Spring贯穿表现层、业务层和持久层。但是spring并不是要取代已有的框架,而是高度开放性的与他们无缝整合。Spring只不过是一个框...原创 2018-06-05 22:47:11 · 184 阅读 · 0 评论 -
Spring基础(5)——装配Bean之Bean容器1——Bean工厂
Spring提供了两种不同的Bean容器,第一种是Bean工厂,由beanFactory接口定义,是最简单的容器,提供基础的依赖注入支持;第二种是应用上下文,由ApplicationContext接口定义,建立在bean工厂之上,提供系统框架服务。所谓装配Bean,是指告诉Spring容器需要哪些Bean以及容器如何使用以来注入将他们组合在一起。一、Bean容器SpringIOC设计的核心是Bea...原创 2018-06-13 00:41:13 · 570 阅读 · 0 评论 -
Spring基础(2)——单例模式、工厂模式
就在几分钟之前,还在挖单例模式和工厂模式,发现越挖内容越多,越挖范围越广,感觉再挖我就爬不出来了,以后在慢慢挖吧,很多原理性的东西可能不是每次都能遇得到,但是熟悉理论知识以后,在后面的工作和学习中,遇到类似的问题,就算不能马上反应出问题出在哪,也能慢慢分析出问题原因并且知道搜索哪些知识可以解决问题。接着补Spring的相关知识。之前在挖的单例模式和工厂模式现在就能用上了。Spring使用配置文件管...原创 2018-06-07 01:26:23 · 472 阅读 · 0 评论 -
Spring基础(6)——使用应用程序环境
ApplicationContext接口由BeanFactory派生而来,提供了更多面向实际应用的功能,在BeanFactory中,很多功能需要以编程的方式实现,而ApplicationContext中则可以通过配置的方式进行控制。因为ApplicationContext完全通过BeanFactory扩展而来,因而BeanFactory所具备的能力和行为也适用于ApplicationContext...原创 2018-06-17 00:18:15 · 172 阅读 · 0 评论 -
Spring基础(11)——自动装配
自动装配类型:byname、bytype、constructor、autodetect1、byname根据属性名进行自动装配。此选项检查容器并根据名称查找与属性完全一致的bean,并将其与属性自动装配。使用byname自动装配类型时,对于设置的属性名字必须提供set方法,否则在启动Spring容器时,将会报出异常。package autowire;public class People { ...原创 2018-06-30 00:11:51 · 225 阅读 · 0 评论 -
Spring基础(3)——控制反转、IOC
Spring各对象以一种松耦合的方式,将各层的对象组织在一起,Action不需要关心Service层的具体实现,Service对象无需关心持久层的具体实现,各层对象的调用全面向接口。当系统重构时,代码的改写量将大大减少。上面所说的一起都得益于Spring的核心机制——依赖注入。通过依赖注入,将Bean与Bean之间以配置文件的形式组织在一起,而不是以硬编码的方式偶合在一起。Spring的核心是IO...原创 2018-06-10 23:44:39 · 164 阅读 · 0 评论 -
Spring基础(7)——Bean的生命周期——BeanFactory中Bean的生命周期
因为一些事,已经有好几天没有更新过Blog了,今天花点时间继续补习Spring基础。在Spring中,容器实现有BeanFactory和ApplicationContext两种,ApplicationContext扩展了BeanFactory。简单来说Bean的生命周期分为定义、初始化、调用和销毁四个过程;但是在Spring的实际运行中非常复杂。通过getBean方法获取一个Bean:开始->...原创 2018-06-26 01:56:44 · 238 阅读 · 0 评论 -
Spring基础(12)——后处理Bean1
Spring提供了特殊的Bean,通过配置后处理Bean对Bean进行后处理;从外部配置文件中加载配置信息;从属性文件中加载文本信息,包括国际化信息;监听并处理由其他Bean以及Spring容器发布的系统消息等。Spring提供了一类Bean,并不对外部提供服务,无需id属性,但它负责对容器中其他的bean进行处理,例如为容器中的目标Bean生成代理。这种bean可称为bean的后处理器,在bea...原创 2018-06-30 23:42:14 · 199 阅读 · 0 评论 -
Spring基础(13)——后处理Bean2
配置信息分离:PropertyPlaceholderConfigurer是BeanFactoryPostProcessor的实现类,用于读取java properties文件中的属性,然后插入BeanFactory的定义中。在应用上下文中从单个外部属性文件装载配置信息:配置单个文件:<bean id="configurer" class="org.springframework.beans....原创 2018-07-01 22:38:11 · 177 阅读 · 0 评论 -
Spring基础(17)——AOP——Throws Advice
Throws Advice:指异常通知,用来处理在方法调用过程中产生的错误或抛出的异常。ThrowsAdvice定义在异常发生时该有什么动作。ThrowsAdvice是一个标识接口,它没有定义任何实现的方法。但是,实现这个接口的类必须至少有个如下方法:void afterThrowing(Throwable throwable)package test.advice;public class ...原创 2018-07-08 01:38:48 · 652 阅读 · 0 评论 -
Spring基础(4)——设值注入、构造注入
设值注入:也称属性注入,是指通过setter()方法传入被调用者的实例。这种注入方式简单、直观,在Spring依赖注入中也是最常用的。public interface Animal { public void eatFood();}public interface Action { public void eat();}public class Cat implement An...原创 2018-06-11 23:43:27 · 1879 阅读 · 0 评论