aspectj

SpringBoot 常用注解

耗尽温柔 提交于 2020-04-30 22:06:08
@SpringBootApplication 这个配置等同于:@Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置。 @EnableAutoConfiguration Spring Boot自动配置(auto-configuration),可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。 如果发现应用了你不想要的特定自动配置类,可以使用@EnableAutoConfiguration注解的排除属性来禁用它们。 @Configuration 相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类,可以使用@ImportResource注解加载xml配置文件。 @ComponentScan @ComponentScan 注解对应XML配置形式中的 <context:component-scan> 元素,表示启用组件扫描,Spring 会自动扫描所有通过注解配置的 bean,然后将其注册到 IOC 容器中。 可以通过 basePackages 等属性来指定 @ComponentScan 自动扫描的范围,如果不指定,默认从声明

How to log request body using spring boot and aspect

≯℡__Kan透↙ 提交于 2020-04-30 08:44:06
问题 I have created an aspect to log the request body passed in a controller function: This is what i am trying @Pointcut("execution(* com.test.test.test.controller.*.* (..))") public void executeController() {} @Pointcut("execution(* com.test.test.common.exception.*.* (..))") public void executeExceptionAdvice() {} @Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping) || " + "@annotation(org.springframework.web.bind.annotation.PostMapping) || " + "@annotation(org

How to log request body using spring boot and aspect

寵の児 提交于 2020-04-30 08:43:07
问题 I have created an aspect to log the request body passed in a controller function: This is what i am trying @Pointcut("execution(* com.test.test.test.controller.*.* (..))") public void executeController() {} @Pointcut("execution(* com.test.test.common.exception.*.* (..))") public void executeExceptionAdvice() {} @Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping) || " + "@annotation(org.springframework.web.bind.annotation.PostMapping) || " + "@annotation(org

Java Sping 第四章——Sping AOP

爷,独闯天下 提交于 2020-04-27 09:49:28
一、Spring Aop的基本概念 1.Aop的概念 面向切面编程(AOP,Aspect Oriented Programming),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。主要功能:日志记录,性能统计,安全控制,事务处理,异常处理等。 AOP实现原理是java动态代理,但是jdk的动态代理必须实现接口,所以spring的aop是用cglib这个库实现的,cglis使用里asm这个直接操纵字节码的框架,所以可以做到不使用接口的情况下实现动态代理。 AOP与OOP的区别: OOP面向对象编程,针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。而AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程的某个步骤或阶段,以获得逻辑过程的中各部分之间低耦合的隔离效果。这两种设计思想在目标上有着本质的差异。 OOP面向名次领域,AOP面向动词领域。 2.Aop的术语 1)连接点(Joinpoint) 程序执行的某个特定位置:如类开始初始化前、类初始化后、类某个方法调用前、调用后、方法抛出异常后

Spring AOP实现原理(递归拦截器)

狂风中的少年 提交于 2020-04-25 09:42:15
一、AOP(Aspect Orient Programming,面向切面编程)相关术语: 1. 切面(Aspect):实现通用问题的类,例如日志,事务管理,定义了切入点和通知的类,通知和切入点共同组成了切面:时间、地点、做什么 2. 通知(Advice):类似Spring拦截器或者Servlet过滤器,是方法,定义切面要做什么,何时使用,有before,after,around.. 3. 连接点(Joinpoint): 程序能够使用通知(Advice)的一个时机,即程序执行过程中明确的点,一般是方法的调用,或异常被抛出 4. 切入点(Pointcut): 定义切面发生在哪里,带了通知的连接点,例如某个类或方法的名称,在程序中主要体现为切入点表达式 5. 引入(Introduction): 向现有的类添加新的属性或方法 6. 目标(Target): 被通知的对象 7. 代理(Proxy):AOP框架创建的对象,代理就是目标对象的增强,Advice + Target = Proxy 8. 织入(Weaving):把切面应用到目标对象时,创建新的代理对象的过程 a. 编译时织入:AspectJ,静态AOP,生成的字节码融入了增强后的AOP对象,性能更好 b. 加载时织入: Instrument c. 运行时织入:Spring AOP动态代理,在内存中临时生成一个AOP对象

谈谈Spring中都用到了哪些设计模式?

流过昼夜 提交于 2020-04-24 16:15:26
谈谈Spring中都用到了哪些设计模式? JDK 中用到了那些设计模式?Spring 中用到了那些设计模式?这两个问题,在面试中比较常见。我在网上搜索了一下关于 Spring 中设计模式的讲解几乎都是千篇一律,而且大部分都年代久远。所以,花了几天时间自己总结了一下,由于我的个人能力有限,文中如有任何错误各位都可以指出。另外,文章篇幅有限,对于设计模式以及一些源码的解读我只是一笔带过,这篇文章的主要目的是回顾一下 Spring 中的常见的设计模式。 Design Patterns(设计模式) 表示面向对象软件开发中最好的计算机编程实践。 Spring 框架中广泛使用了不同类型的设计模式,下面我们来看看到底有哪些设计模式? 控制反转(IOC)和依赖注入(DI) IoC(Inversion of Control,控制翻转) 是Spring 中一个非常非常重要的概念,它不是什么技术,而是一种解耦的设计思想。它的主要目的是借助于“第三方”(即Spring 中的 IOC 容器) 实现具有依赖关系的对象之间的解耦(IOC容易管理对象,你只管使用即可),从而降低代码之间的耦合度。 IOC 是一个原则,而不是一个模式,以下模式(但不限于)实现了IoC原则。 ​ ioc-patterns Spring IOC容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可

高强度学习训练第十六天总结: Spring框架中的设计模式

∥☆過路亽.° 提交于 2020-04-24 15:46:25
仔细想了想。。没必要重复造轮子。 每天复习啥了就直接CTRL CV了 https://gitee.com/SnailClimb/JavaGuide/blob/master/docs/system-design/framework/spring/Spring-Design-Patterns.md# 控制反转(IoC)和依赖注入(DI) IoC(Inversion of Control,控制翻转) 是Spring 中一个非常非常重要的概念,它不是什么技术,而是一种解耦的设计思想。它的主要目的是借助于“第三方”(Spring 中的 IOC 容器) 实现具有依赖关系的对象之间的解耦(IOC容易管理对象,你只管使用即可),从而降低代码之间的耦合度。 IOC 是一个原则,而不是一个模式,以下模式(但不限于)实现了IoC原则。 Spring IOC 容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。 IOC 容器负责创建对象,将对象连接在一起,配置这些对象,并从创建中处理这些对象的整个生命周期,直到它们被完全销毁。 在实际项目中一个 Service 类如果有几百甚至上千个类作为它的底层,我们需要实例化这个 Service,你可能要每次都要搞清这个 Service 所有底层类的构造函数,这可能会把人逼疯。如果利用 IOC 的话

Spring中用到了哪些设计模式?

落花浮王杯 提交于 2020-04-24 15:43:28
谈谈Spring中都用到了哪些设计模式? JDK 中用到了那些设计模式?Spring 中用到了那些设计模式?这两个问题,在面试中比较常见。我在网上搜索了一下关于 Spring 中设计模式的讲解几乎都是千篇一律,而且大部分都年代久远。所以,花了几天时间自己总结了一下,由于我的个人能力有限,文中如有任何错误各位都可以指出。另外,文章篇幅有限,对于设计模式以及一些源码的解读我只是一笔带过,这篇文章的主要目的是回顾一下 Spring 中的常见的设计模式。 Design Patterns(设计模式) 表示面向对象软件开发中最好的计算机编程实践。 Spring 框架中广泛使用了不同类型的设计模式,下面我们来看看到底有哪些设计模式? 控制反转(IOC)和依赖注入(DI) IoC(Inversion of Control,控制翻转) 是Spring 中一个非常非常重要的概念,它不是什么技术,而是一种解耦的设计思想。它的主要目的是借助于“第三方”(即Spring 中的 IOC 容器) 实现具有依赖关系的对象之间的解耦(IOC容易管理对象,你只管使用即可),从而降低代码之间的耦合度。 IOC 是一个原则,而不是一个模式,以下模式(但不限于)实现了IoC原则。 ​ ioc-patterns **Spring IOC容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可

一步步从Spring Framework装配掌握SpringBoot自动装配

故事扮演 提交于 2020-04-22 07:43:31
[TOC] Spring Framework模式注解 模式注解是一种用于声明在应用中扮演“组件”角色的注解。如 Spring Framework 中的 @Repository 标注在任何类上 ,用 于扮演仓储角色的模式注解。 模式注解(角色注解) Spring Framework 注解 场景说明 @Component 通用组件模式注解 @Controller Web 控制器模式注解 @Service 服务模式注解 @Repository 数据仓储模式注解 @Configuration 配置类模式注解 在Spring中进行装配 context:component-scan 方式 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org

曹工说Spring Boot源码(16)-- Spring从xml文件里到底得到了什么(aop:config完整解析【上】)

丶灬走出姿态 提交于 2020-04-18 10:22:30
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean Definition到底是什么,咱们对着接口,逐个方法讲解 曹工说Spring Boot源码(3)-- 手动注册Bean Definition不比游戏好玩吗,我们来试一下 曹工说Spring Boot源码(4)-- 我是怎么自定义ApplicationContext,从json文件读取bean definition的? 曹工说Spring Boot源码(5)-- 怎么从properties文件读取bean 曹工说Spring Boot源码(6)-- Spring怎么从xml文件里解析bean的 曹工说Spring Boot源码(7)-- Spring解析xml文件,到底从中得到了什么(上) 曹工说Spring Boot源码(8)-- Spring解析xml文件,到底从中得到了什么(util命名空间) 曹工说Spring Boot源码(9)-- Spring解析xml文件,到底从中得到了什么(context命名空间上) 曹工说Spring Boot源码(10)-- Spring解析xml文件,到底从中得到了什么(context:annotation-config 解析)