Spring--AOP面向切面编程,java后端面试通过邮件范本

2023-10-29 01:59

本文主要是介绍Spring--AOP面向切面编程,java后端面试通过邮件范本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

⽂章有点⻓,请耐⼼看完,绝对有收获!不想听我BB直接进⼊⾯试分享:

  • 准备过程
  • 蚂蚁⾦服⾯试分享
  • 拼多多⾯试分享
  • 字节跳动⾯试分享
  • 最后总结个人所得(供大家参考学习)

当时我⾃⼰也准备出去看看机会,顺便看看⾃⼰的实⼒。当时我其实挺纠结的,⼀⽅⾯现在部⻔也正需要我,还是可以有⼀番作为的,另⼀⽅⾯觉得近⼀年来进步缓慢,没有以前⻜速进步的成就感了,⽽且业务和技术偏于稳定,加上⾃⼰也属于那种⽐较懒散的⼈,⻣⼦⾥还是希望能够突破现状,持续在技术上有所精进

那么问题来了,⽬标是啥?就我⽽⾔,短期⽬标是深⼊研究某⼀项技术,⽐如最近在研究mysql,那么深⼊研究⼀定要动⼿实践并且有所产出,这就够了么?还需要我们能够举⼀反三,结合实际开发场景想⼀想⽇常开发要注意什么,这中间有没有什么坑?可以看出,要进步真的不是⼀件简单的事,这种反⼈类的⾏为需要我们克服⾃我的弱点,逐渐形成习惯。真正⽜逼的⼈,从不觉得认真学习是⼀件多么难的事,因为这已经形成了他的习惯,就喝早上起床刷⽛洗脸那么⾃然简单。

可以直接写数据类型:基本类型直接写名称,引用类型使用:.类名的方式,类型可以使用通配符来表示任意类型,但必须有参数。

可以使用..表示有无参数均可,有参数可以是任意类型

  • 全通配写法:* *..*.*(..)

通知的类型: 前置通知、后置通知、异常通知、最终通知、环绕通知。

  • 前置通知:在目标方法运行之前运行

  • 后置通知:在我们的目标方法正常返回值后运行

  • 异常通知:在我们的目标方法出现异常后运行

  • 最终通知:在目标方法运行结束之后 ,不管有没有异常

  • 环绕通知:是spring框架为我们提供的一种可以在代码中手动控制增强方法何时执行的方法

[](()AOP案例:对增删改方法进行增强


项目结构:

在这里插入图片描述

在pom.xml中导入相关依赖:

org.springframework

spring-context

5.0.2.RELEASE

org.aspectj

aspectjweaver

1.8.7

新建业务层接口和实现类:

/**

  • @Author: Ly

  • @Date: 2020-08-02 22:14

*/

public interface IAccountService {

/**

  • 模拟保存账户

*/

void saveAccount();

/**

  • 模拟修改账户

  • @param i

*/

void updateAccount(int i);

/**

  • 模拟删除账户

  • @return

*/

int deleteAccount();

}

/**

  • @Author: Ly

  • @Date: 2020-08-02 22:17

*/

public class AccountServiceImpl implements IAccountService {

public void saveAccount() {

System.out.println(“执行了保存”);

}

public void updateAccount(int i) {

System.out.println(“执行力修改”);

}

public int deleteAccount() {

System.out.println(“执行了删除”);

return 0;

}

}

新建通知类:

/**

  • @Author: Ly

  • @Date: 2020-08-02 22:19

*/

public class Logger {

/**

  • 前置通知

*/

public void beforePrintLog(){

System.out.println(“前置Logger类中的printLog方法开始记录日志了”);

}

/**

  • 后置通知

*/

public void afterReturningPrintLog(){

System.out.println(“后置Logger类中的printLog方法开始记录日志了”);

}

/**

  • 异常通知

*/

public void afterThrowPrintLog(){

System.out.println(“异常Logger类中的printLog方法开始记录日志了”);

}

/**

  • 最终通知

*/

public void afterPrintLog(){

System.out.println(“最终Logger类中的printLog方法开始记录日志了”);

}

public Object aroundPrintLog(ProceedingJoinPoint pjp){

Object rtValue = null;

try {

Object[] args=pjp.getArgs();//得到方法执行所需的参数

System.out.println(“前Logger类中的aroundPrintLog方法开始记录日志了”);

rtValue=pjp.proceed(args);//明确调用业务层方法(切入点方法)

System.out.println(“后Logger类中的aroundPrintLog方法开始记录日志了”);

return rtValue;

} catch (Throwable e) {

System.out.println(“异常Logger类中的aroundPrintLog方法开始记录日志了”);

throw new RuntimeException(e);

}finally {

System.out.println(“最终Logger类中的aroundPrintLog方法开始记录日志了”);

}

}

}

最后总结

ActiveMQ+Kafka+RabbitMQ学习笔记PDF

image.png

  • RabbitMQ实战指南

image.png

  • 手写RocketMQ笔记

image.png

  • 手写“Kafka笔记”

image

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦

  • 手写RocketMQ笔记

[外链图片转存中…(img-TcwcoLbm-1649751240448)]

  • 手写“Kafka笔记”

[外链图片转存中…(img-qTghq3rX-1649751240448)]

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦
阿里P7熬夜整理的《Java全套学习手册》,火爆IT圈

这篇关于Spring--AOP面向切面编程,java后端面试通过邮件范本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/297511

相关文章

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

Java中List转Map的几种具体实现方式和特点

《Java中List转Map的几种具体实现方式和特点》:本文主要介绍几种常用的List转Map的方式,包括使用for循环遍历、Java8StreamAPI、ApacheCommonsCollect... 目录前言1、使用for循环遍历:2、Java8 Stream API:3、Apache Commons

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

Java CompletableFuture如何实现超时功能

《JavaCompletableFuture如何实现超时功能》:本文主要介绍实现超时功能的基本思路以及CompletableFuture(之后简称CF)是如何通过代码实现超时功能的,需要的... 目录基本思路CompletableFuture 的实现1. 基本实现流程2. 静态条件分析3. 内存泄露 bug

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Java中Object类的常用方法小结

《Java中Object类的常用方法小结》JavaObject类是所有类的父类,位于java.lang包中,本文为大家整理了一些Object类的常用方法,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. public boolean equals(Object obj)2. public int ha