006 spring aop(初识)

文章目录

    • pom.xml
    • LogAspect.java
    • StudentServiceImpl.java
    • StudentService.java
    • applicationContext.xml
    • StudentServiceImplTest.java

pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.aistart</groupId><artifactId>Spring_demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>Aspect_demo</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.3.30</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.6</version></dependency></dependencies></project>

LogAspect.java

package com.aistart.aspect;public class LogAspect {public void LogInfoAfter(){System.out.println("后置日志");}public void LogInfoBefore(){System.out.println("前置日志");}
}

StudentServiceImpl.java


package com.aistart.service.impl;import com.aistart.service.StudentService;public class StudentServiceImpl implements StudentService {@Overridepublic void insertStudent() {System.out.println("加入一个学生的业务");}
}

StudentService.java


package com.aistart.service;public interface StudentService {void insertStudent();
}

applicationContext.xml

<?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:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd"><bean id="studentService" class="com.aistart.service.impl.StudentServiceImpl"/><!--增强类/切面对象--><bean id="logAspect" class="com.aistart.aspect.LogAspect"/><!-- bean definitions here --><aop:config><aop:aspect ref="logAspect"><!--代理的功能--><!--execution([修饰符] 返回类型 全限类名.函数名() )--><aop:pointcut id="studentServiceCut" expression="execution(* com.aistart.service.impl.StudentServiceImpl.*(..))"/><aop:pointcut id="studentServiceCut1" expression="execution(* com.aistart.service.impl.StudentServiceImpl.*(..))"/><aop:before method="LogInfoBefore" pointcut-ref="studentServiceCut"></aop:before><aop:after method="LogInfoAfter" pointcut-ref="studentServiceCut"></aop:after></aop:aspect></aop:config></beans>

StudentServiceImplTest.java

package com.aistart.service.impl;import com.aistart.service.StudentService;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;import static org.junit.Assert.*;public class StudentServiceImplTest {@Testpublic void insertStudent() {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");StudentService studentService = context.getBean("studentService", StudentService.class);studentService.insertStudent();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java内部类(一)

常用类&#xff08;一&#xff09; 内部类 成员内部类&#xff1a;一个类定义在另一个类中静态内部类&#xff1a;static局部内部类&#xff1a;一个方法内定义一个类匿名内部类&#xff1a;没有名字的内部类 内部类如下 class Outer{class Inner{} }特点&#xff1a; 编译…

『VUE』14. Style绑定(详细图文注释)

目录 行内css动态样式对象引入数组引入代码演示总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 大体上和前面的class绑定是一致的,只是class换成了style. 请注意,实际开发中,我们一般建议用class,因为style的权重太高了,用sty…

day13 java final 类和对象的初始化执行顺序

final [面试题]请简述final关键字final修饰类&#xff08;最终的类&#xff09;-太监类&#xff1a;该类不能被继承。(比如&#xff1a;String StringBuilder,....) final修饰方法&#xff08;最终的方法&#xff09;&#xff1a;不能被重写 final修饰的变量 &#xff1a;值不…

边缘计算采集网关如何助力制造企业解决数采问题-天拓四方

一、企业背景 某大型制造企业&#xff0c;位于国内某经济发达的工业园区内&#xff0c;拥有多个生产线和智能化设备&#xff0c;致力于提高生产效率、降低运营成本。随着企业规模的扩大和生产自动化的推进&#xff0c;该企业面临着海量数据处理、实时响应和网络安全等多重挑战…

C++(10): std::map、std::multimap与std::unordered_map

1. 简述 std::map、std::multimap 和 std::unordered_map 是 C 标准模板库&#xff08;STL&#xff09;中的三种关联容器&#xff0c;它们提供了存储键值对&#xff08;pair&#xff09;的方式&#xff0c;并允许通过键来快速检索值。这三者之间的主要区别在于它们的内部数据结…

JAVA实现网络爬虫

在Java中实现网络爬虫&#xff0c;可以使用Java内置的java.net.URL和java.net.URLConnection类来发送HTTP请求&#xff0c;也可以使用更高级的库&#xff0c;如Apache的HttpClient和Jsoup&#xff0c;后者可以方便地解析HTML文档。 以下是一个使用HttpClient和Jsoup的Java网络…

day14 java接口

接口 接口&#xff1a;对不同类型不同事物相同功能的描述&#xff08;一定程序上解决了单继承的局限性&#xff09;接口可以理解成一种标准 规范当类实现这个接口就实现了这个标准或规范接口的格式&#xff1a;权限修饰符 interface 接口名{}权限修饰符只能是public和缺省的。…

ElementUI使用问题记录:设置路由+iconfont图标+自定义表单验证

一、关于导航怎么设置路由 1、在el-menu这个标签的属性中添加 router ,官方文档的解释是&#xff1a;启用vue-router 这种模式 2、在el-menu-item标签中的index属性直接书写路由&#xff0c;就可以实现正常vue-router了 3、在el-menu-item标签中书写路由属性&#xff1a;:route…

【C++进阶】哈希的应用之位图和布隆过滤器

位图和布隆过滤器 一&#xff0c;位图1. 实现2. 位图的应用 二&#xff0c;布隆过滤器1. 使用场景2. 模拟实现 三&#xff0c;海量数据面试题哈希切分 四&#xff0c;总结 这一节我们来看哈希的应用 一&#xff0c;位图 先来看一个面试题 这里如果用unordered_set来解决&…

C++学习笔记三--基本控制语句

目录 前言 一、C语句 二、顺序结构 1.声明语句 2.表达式语句 3.基本输入/输出语句 4.复合语句和空语句 三、选择结构 1.if语句 2.switch语句 四、循环结构 1.for语句 2.while语句 3.do...while语句 4.循环的嵌套 五、跳转语句 前言 这篇文章介绍一…

C++11可变模板参数:海纳百川的Args

目录 一、可变模板参数的概念及功能 1.1Args的概念与使用 1.2获取args中的参数 二、emplace可变模板参数的实际应用 三、逗号表达式展开参数包 一、可变模板参数的概念及功能 1.1Args的概念与使用 C11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板…

二维码门楼牌管理应用平台建设:物业缴费的数字化革新

文章目录 前言一、物业缴费的数字化革新二、在线缴费功能的实现三、智能化缴费管理的优势四、面临的挑战与未来展望五、结语 前言 随着科技的不断进步&#xff0c;二维码门楼牌管理应用平台已成为物业管理的新趋势。在这样一个平台上&#xff0c;物业缴费的数字化革新不仅提高…

【计算机网络】TCP协议可靠传输保证(序列号/确认应答机制、超时重传、最长消息长度、滑动窗口控制、拥塞控制)

TCP协议可靠传输 1.序列号确认应答机制2.超时重传3.最长消息长度4.滑动窗口控制5.拥塞控制 1.序列号确认应答机制 这个机制类似于问答的形式。比如在课堂上老师会问你“明白了吗&#xff1f;”&#xff0c;假如你没有隔一段时间没有回应或者你说不明白&#xff0c;那么老师就会…

橘子学JDK之JMH-03(@State)

这里我们来搞官方的第三个案例&#xff0c;引入新的注解State。 一、案例三代码 package com.levi;/*** Description:* Author: Levi* Date: 2024/4/8 18:44*/import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.R…

【YOLOV8】项目目录重点部分介绍和性能评估指标

目录 一 项目目录重点部分介绍 二 性能评估指标 一 项目目录重点部分介绍 1 ultralytics

揭秘Dropbear SSH:轻量级的安全外壳协议实现

在远程管理和通讯的世界里&#xff0c;安全是至关重要的一环。SSH&#xff08;Secure Shell&#xff09;协议是互联网上用于安全远程登录和其他网络服务的标准方式。当我们提到SSH时&#xff0c;OpenSSH可能是最广为人知的实现。然而&#xff0c;在资源受限的环境中&#xff0c…

windows环境变量滥用维权/提权

0x01 前提 通过滥用系统的路径搜索机制来欺骗高权限用户执行看似合法的系统二进制文件&#xff0c;实际上是恶意的代码或程序&#xff0c;从而导致升权限并执行恶意操作。 攻击的关键前提&#xff1a; 路径搜索顺序&#xff1a; 当用户在命令行或程序中执行一个命令时&#x…

kafka 高吞吐设计分析

说明 本文基于 kafka 2.7 编写。author blog.jellyfishmix.com / JellyfishMIX - githubLICENSE GPL-2.0 概括 支撑 kafka 高吞吐的设计主要有以下几个方面: 网络 nio 主从 reactor 设计模式 顺序写。 零拷贝。 producer producer 开启压缩后是批量压缩&#xff0c;bro…

【Qt】:常用控件(七:输入类控件)

常用控件 一.Combo Box&#xff08;下拉框&#xff09;二.Spin Box&#xff08;微调框&#xff09;三.ate Edit&Time Edit&#xff08;日期微调框&#xff09;四.Dial&#xff08;旋钮&#xff09;五.Slider&#xff08;滑动条&#xff09; 一.Combo Box&#xff08;下拉框…