aop

(6)Spring 框架的 AOP

﹥>﹥吖頭↗ 提交于 2020-01-21 00:19:20
1. Spring 框架的 AOP Spring AOP概念理解 (通俗易懂) https://blog.csdn.net/qukaiwei/article/details/50367761 AOP概念 aop:面向切面(方面)编程,扩展功能不修改源代码实现 AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码 aop底层使用动态代理实现 (1)第一种情况,有接口情况,使用动态代理创建接口实现类代理对象 (2)第二种情况,没有接口情况,使用动态代理创建类的子类代理对象 AOP原理 画图分析原理 AOP操作术语 Joinpoint(连接点) : 类里面可以被增强的方法,这些方法称为连接点 Pointcut(切入点) :所谓切入点是指我们要对哪些Joinpoint进行拦截的定义. Advice(通知/增强) :所谓通知是指拦截到Joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能) Aspect(切面) : 是切入点和通知(引介)的结合 Introduction(引介) :引介是一种特殊的通知在不修改类代码的前提下, Introduction可以在运行期为类动态地添加一些方法或Field. Target(目标对象) :代理的目标对象(要增强的类) Weaving(织入) :是把增强应用到目标的过程. 把advice

Spring与ActiveMQ整合

微笑、不失礼 提交于 2020-01-20 08:58:03
在实际的项目中如果使用原生的ActiveMQ API开发会比较麻烦,因为需要创建连接工厂,创建连接等,我们应该使用一个模板来做这些繁琐的事情,Spring帮我们做了! Spring提供了对JMS的支持,需要添加Spring支持jms的包,如下: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> <version>5.9.0</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.9.0</version> </dependency> 在spring-amq.xml中配置JmsTemplate (这样的配置没啥问题,在实际的项目中就是这样配置的) <?xml version="1.0"

转 Java 208道面试题及部分答案 补充部分答案

元气小坏坏 提交于 2020-01-20 08:41:26
转自 https://www.cnblogs.com/chen1005/p/10481102.html ---恢复内容开始--- 一、Java 基础 1.JDK 和 JRE 有什么区别? 答:JRE是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。   JDK是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的 2.== 和 equals 的区别是什么? 答:==是比较两个对象的地址,equals是比较连个对象的内容 3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? 答:不对!hashCode()相同,不代表连个对象就相同。hashCode值是从hash表中得来的,hash是一个函数,该函数的实现是一种算法,通过hash算法算出hash值,hash表就是 hash值组成的,一共有8个位置。   相反,equals()相同,hashCode()一定相同。这个是正确的! 4.final 在 java 中有什么作用? 答: final的作用随着所修饰的类型而不同: final修饰类中的属性或者变量:无论属性是基本类型还是引用类型, final所起的作用都是变量里面存放的“值”不能变

.NET平台下开源框架

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-20 08:36:15
一、AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架。Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式。这种部署方面(aspects)的方法帮助缺少经验的开发人员提高开发效率。 NKalore是一款编程语言,它扩展了C#允许在.net平台使用AOP。NKalore的语法简单、直观,它的编译器是基于Mono C#编译器(MCS)。NKalore目前只能在命令行或#Develop内部使用。NKalore兼容公共语言规范CLS(Common Language Specification),它可以在任何.NET开发环境中使用,包括微软的Visual Studio .NET。 PostSharp读取.NET字节模块,转换成对象模型。让插件分析和转换这个模型并写回到MSIL。PostSharp使开发程序分析应用程序容易得像分析代码规则和设计模式,它使程序开发的思想变革为面向方面软件开发(AOSD/AOD)思想。 AspectDNG的目标是为.NET开发人员提供简单而功能强大的AOP-GAOP实现。它效仿java下的开源工具AspectJ 和 Spoon,成熟程度也很接近它们。 RAIL(Runtime Assembly Instrumentation Library) 开源项目可以在C

spring中IOC与AOP的相关注解

做~自己de王妃 提交于 2020-01-20 00:56:06
1.IOC中 1. @Configuration : 作用 :表明当前类是一个配置类 属性 : value :它和basePackages的作用是一样的, 都是指定创建容器时要扫描的包 细节 :当配置类作为AnnotationConfigApplicationContext 对象创建的参数时,该注解可以不写。 2. @ComponentScan : 作用 :扫描包,里边的value属性为我们要扫描的包名; 3. @Bean 作用 :用于把当前方法的返回值作为bean对象存入spring的IOC容器中 属性 : name: 用于指定bean的id。默认值是当前方法的名称 细节 :当我们使用注解配置方法时,如果方法有参数,spring框架会去容器中查找有没有可用的bean对象。 查找的方式和Autowired注解的作用是一样的。 4. @Import : 作用 :用于导入其他的配置类 属性 : value :用于指定其他配置类的字节码 细节 :当我们使用Import的注解之后,有Import注解的类就是父配置类,而导入的都是子配置类 5. @Propertysource : 作用 :用于指定properties文件的位置 属性 : value :指定文件的名称和路径 关键字 :classpath;表示类路径下 6. @Component 作用 :用于把当前类存入spring容器中 属性

2020年1月加强记忆

自作多情 提交于 2020-01-19 22:28:52
String、StringBuffer、StringBuilder三者区别 String 是 Java 中基础且重要的类,被声明为 final class,是不可变字符串。因为它的不可变性,所以拼接字符串时候会产生很多无用的中间对象,如果频繁的进行这样的操作对性能有所影响。 StringBuffer 就是为了解决大量拼接字符串时产生很多中间对象问题而提供的一个类。它提供了 append 和 add 方法,可以将字符串添加到已有序列的末尾或指定位置,它的本质是一个线程安全的可修改的字符序列。 在很多情况下我们的字符串拼接操作不需要线程安全,所以 StringBuilder 登场了。StringBuilder 是 JDK1.5 发布的,它和 StringBuffer 本质上没什么区别,就是去掉了保证线程安全的那部分,减少了开销。 线程安全: StringBuffer:线程安全 StringBuilder:线程不安全 速度: 一般情况下,速度从快到慢为 StringBuilder > StringBuffer > String,当然这是相对的,不是绝对的。 使用环境: 操作少量的数据使用 String。 单线程操作大量数据使用 StringBuilder。 多线程操作大量数据使用 StringBuffer。 Java集合 什么是依赖注入 spring依赖注入的理解 https:/

Spring面试专题之aop

[亡魂溺海] 提交于 2020-01-19 20:37:00
1.背景 aop是编程中非常非常重要的一种思想,在spring项目中用的场景也非常广 2.面试问题 2.1.简单的面试问题 1、什么是aop,aop的作用是什么? 面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足除了类(classes)以外,AOP提供了切面。切面对关注点进行模块化,例如横切多个类型和对象的事务管理。 Spring的一个关键的组件就是AOP框架,可以自由选择是否使用AOP提供声明式企业服务,特别是为了替代EJB声明式服务。最重要的服务是声明性事务管理,这个服务建立在Spring的抽象事物管理之上允许用户实现自定义切面,用AOP来完善OOP的使用可以把Spring AOP看作是对Spring的一种增强。 2、AOP里面重要的几个名词概念解释: 切面(Aspect): 一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。 在Spring AOP中,切面可以使用通用类(基于模式的风格) 或者在普通类中以 @Aspect 注解(@AspectJ风格)来实现。 连接点(Joinpoint): 在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。 在Spring AOP中,一个连接点 总是 代表一个方法的执行。 通过声明一个org.aspectj.lang

SpringBoot集成AOP学习笔记

五迷三道 提交于 2020-01-19 19:44:19
SpringBoot集成AOP学习笔记 前言 博客书 版本说明 spring.boot=2.2.3.RELEASE 相关链接 总的说明 无异常执行顺序:around before ——> before ——> 拦截的方法 ——> around after ——> after ——> afterReturning 有异常执行顺序:around before ——> before ——> 拦截的方法 ——> after ——> afterThrowing around before :环绕通知前 around after :环绕通知后 before : 前置通知 after : 后置通知 afterReturning :返回后通知 afterThrowing :异常通知 实战演练 pom.xml < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-aop </ artifactId > </ dependency > Controller package top . simba1949 . controller ; import lombok . extern . slf4j . Slf4j ; import org .

springboot学习记录--aop入门

偶尔善良 提交于 2020-01-19 04:42:40
springboot学习记录–aop入门 execution表达式 例:execution(* com.study.managersystem.service… . (…)) execution(返回值类型 被切包名…(类名).方法名(参数)) Aop注解 @Aspect 切面类 @Component 申明aop切面类 @Pointcut(“execution(* com.study.managersystem.service… . (…))”) 申明切点 @Before(“被增强方法”) 前置通知,在切点方法执行前执行 @After(“被增强方法”) 后置通知,在切点方法执行后执行 @Around(“被增强方法”) 前置通知,在切点方法执行前后执行(第一次在before之前,第二次在after之前) 实例 package com.study.managersystem.aop; import org.aopalliance.intercept.Joinpoint; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.slf4j.Logger; import org.slf4j

Java Web-Spring框架(二)

你说的曾经没有我的故事 提交于 2020-01-19 00:07:39
1、后处理 bean 对一个bean生效 2、注解和xml混合使用 a、将所有的 bean 都配置在 xml 中,<bean id="" class="" b、将所有的依赖都使用注解,@Autowired,默认不生效。为了生效,需要在xml中配置:<context:annotation-config,如图: 上图中,两个注解一般不一起使用,“注解1”扫描含有注解(@Component等)类,注入注解也会自动生效。“注解2”只在xml和注解(注入)混合使用时,使注入注解生效。 3、AOP 3.1、AOP介绍 AOP(Aspect Oriented Programming),面向切面编程。通过预编译方式和运动期动态代理实现程序功能的统一维护的一种技术。是OOP(面向对象编程)的延续,采取 横向抽取 机制,取代了传统 纵向继承 体系重复性代码。如图: 经典应用:事务管理、性能监视、安全检查、缓存、日志等。 Spring AOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码。 AOP实现原理 AOP底层将采用代理机制进行实现。 接口 + 实现类:spring采用 jdk的 动态代理 Proxy 实现类:spring采用 cglib字节码增强 AOP术语【掌握】 target:目标类,需要被代理的类。例如:UserService