该文章主要为完成实训任务,详细实现过程及结果见【http://t.csdn.cn/FBkpc】

文章目录

  • 一、采用配置方式使用AOP
    • 1.1 创建所需子包
    • 1.2 创建杀龙任务类
    • 1.3 创建勇敢骑士类
    • 1.4 创建游吟诗人类
    • 1.5 创建Spring配置文件
    • 1.6 添加AOP相关依赖
    • 1.7 创建测试类 - TestKnight
    • 1.8 运行测试方法,查看结果
    • 1.9 练习
      • 1.9.1 创建救美任务类与救美骑士类
      • 1.9.2 在测试类里增加测试方法
      • 1.9.3 运行测试类,查看结果

一、采用配置方式使用AOP

1.1 创建所需子包

  • cn.kox.spring包里创建day05.aop_xml子包

1.2 创建杀龙任务类

  • aop_xml子包里创建杀龙任务类 - SlayDragonQuest
package cn.kox.spring.day05.aop_xml;import org.springframework.stereotype.Component;/*
* 杀龙任务类
* */
@Component
public class SlayDragonQuest {public void embark() {System.out.println("执行杀龙任务...");}
}

1.3 创建勇敢骑士类

  • aop_xml子包里创建勇敢骑士类 - BraveKnight
package cn.kox.spring.day05.aop_xml;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/*
* 勇敢骑士类
* */@Component("RobinHood")
public class BraveKnight {@Value("罗宾汉")private String name;@Autowiredprivate SlayDragonQuest slayDragonQuest;public void embarkOnQuest() {System.out.print("勇敢骑士[" + name + "]");slayDragonQuest.embark();}
}

1.4 创建游吟诗人类

  • aop_xml子包里创建游吟诗人类 - Minstrel
package cn.kox.spring.day05.aop_xml;import org.springframework.stereotype.Component;@Component
public class Minstrel {/*** 骑士出发前唱赞歌*/public void singBeforeQuest() {System.out.println("啦啦啦,骑士出发了~");}/*** 骑士凯旋时唱赞歌*/public void singAfterQuest() {System.out.println("真棒啊!骑士完成了任务~");}
}

1.5 创建Spring配置文件

  • resources里创建aop_xml目录,在里面创建spring-config.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:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttps://www.springframework.org/schema/aop/spring-aop.xsd"><!--组件扫描--><context:component-scan base-package="cn.kox.spring.day05.aop_xml"/><!--配置AOP--><aop:config><!--定义切面--><aop:aspect ref="minstrel"><!--定义切点--><aop:pointcut id="embark" expression="execution(* cn.kox.spring.day05..*.embarkOnQuest(..))"/><!--声明前置通知--><aop:before method="singBeforeQuest" pointcut-ref="embark"/><!--声明后置通知--><aop:after method="singAfterQuest" pointcut-ref="embark"/></aop:aspect></aop:config>
</beans>

1.6 添加AOP相关依赖

  • 在pom.xml文件里添加AOP相关依赖
        <!--Spring AOP--><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId> <version>5.3.25</version></dependency><!--AspectJ支持--><dependency><groupId>aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.5.4</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.19</version><scope>runtime</scope></dependency>

1.7 创建测试类 - TestKnight

  • 在test/java里创建cn.kox.spring.day05.aop_xml包,在包里创建TestKnight
package cn.kox.spring.day05.aop_xml;import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestKnight {private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器@Beforepublic void init() {// 基于Spring配置文件创建应用容器context = new ClassPathXmlApplicationContext("aop_xml/spring-config.xml");}@Testpublic void testBraveKnight() {// 根据名称从应用容器里获取勇敢骑士对象BraveKnight braveKnight = (BraveKnight) context.getBean("RobinHood");// 勇敢骑士执行任务braveKnight.embarkOnQuest();}@Afterpublic void destroy() {// 关闭应用容器context.close();}
}

1.8 运行测试方法,查看结果

  • 运行testBraveKinght()方法

1.9 练习

1.9.1 创建救美任务类与救美骑士类

  • 创建RescueDamselQuest类和RescueDamselKnight
  • RescueDamselQuest类
package cn.kox.spring.day05.aop_xml;import org.springframework.stereotype.Component;/*
* 救美任务类
* */
@Component
public class RescueDamselQuest {public void embark() {System.out.println("执行救美任务...");}
}
  • RescueDamselKnight类
package cn.kox.spring.day05.aop_xml;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;/*
* 救美骑士类
* */
@Component("Galahad")
public class RescueDamselKnight {@Value("格拉海德")private String name;@Autowiredprivate RescueDamselQuest rescueDamselQuest;public void embarkOnQuest() {System.out.print("救美骑士[" + name + "]");rescueDamselQuest.embark();}
}

1.9.2 在测试类里增加测试方法

  • 测试方法 - testRescueDamselKnight()
package cn.kox.spring.day05.aop_xml;import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestKnight {private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器@Beforepublic void init() {// 基于Spring配置文件创建应用容器context = new ClassPathXmlApplicationContext("aop_xml/spring-config.xml");}@Testpublic void testBraveKnight() {// 根据名称从应用容器里获取勇敢骑士对象BraveKnight braveKnight = (BraveKnight) context.getBean("RobinHood");// 勇敢骑士执行任务braveKnight.embarkOnQuest();}@Testpublic void testRescueDamselKnight() {RescueDamselKnight rescueDamselKnight = (RescueDamselKnight) context.getBean("Galahad");rescueDamselKnight.embarkOnQuest();}@Afterpublic void destroy() {// 关闭应用容器context.close();}
}

1.9.3 运行测试类,查看结果

Java企业开发学习笔记(1.5.1)采用配置方式使用AOP相关推荐

  1. Java企业开发学习笔记(1.2)利用组件注解符精简Spring配置文件

    该文章主要为完成实训任务,详细实现过程及结果见[http://t.csdn.cn/iSeSH] 文章目录 一. 利用组件注解符精简Spring配置文件 1.1 创建新包 1.2 复制四个类 1.3 修 ...

  2. Java企业开发学习笔记(1.1)采用Spring配置文件管理Bean

    该文章主要为完成实训任务,详细实现过程及结果见[http://t.csdn.cn/iK3aM] 文章目录 1. 创建Maven项目 2. 添加Spring依赖 3. 创建杀龙任务 4. 创建勇士类 5 ...

  3. Windows驱动开发学习笔记(一)—— 环境配置第一个驱动程序

    Windows驱动开发学习笔记(一)-- 环境配置&第一个驱动程序 环境配置 第一个驱动程序 环境配置 安装VS2010:https://pan.baidu.com/s/1uZWWxCtB60 ...

  4. 【Android开发学习笔记之一】5大布局方式详解

    Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 帧布局(FrameLayout):组件从屏幕左上方布局组件. 表格布局(Tabl ...

  5. JAVA企业级开发学习笔记

    杂项 JAVA概述 JAVA API 在线文档 www.matools.com JAVA发展历史 1990 sun公司启动绿色计划,1992年创建java语言,1994gosling参加硅谷大会演示j ...

  6. java ndk_NDK开发学习笔记之 javah 及 ndk-build

    上一篇写到 NDK 的基本使用及环境搭建. 并写了一个简单的 cpp 文件,但是有没有发现在编写 cpp 文件中的函数时,名字是不是很长,很容易写错! 那么,哟没有方法,自动生成函数名呢?没错,你猜对 ...

  7. java微信自动回复机器人开发(java微信开发学习笔记3)

    微信自动回复机器人原理很简单,获取用户发送到后台的数据,然后调用机器人的api进行回复即可.我使用的茉莉机器人,官网地址如下: http://www.itpk.cn/ 茉莉机器人的api:http:/ ...

  8. JAVA串口开发学习笔记1

    1.下载java Communications api开发包.  2.将win32com.dll拷贝入C:\j2sdk1.4.2_04\bin 3.将comm.jar拷贝入C:\j2sdk1.4.2_ ...

  9. python 输入输出转web_云计算开发学习笔记:Python3 输入和输出方式

    Python两种输出值的方式: 表达式语句和 print() 函数.第三种方式是使用文件对象的 write() 方法,标准输出文件可以用 sys.stdout 引用. 如果你希望输出的形式更加多样,可 ...

最新文章

  1. 从java里调用r jri的设置方法_从Java里调用R – JRI的设置方法
  2. HTML 5新增的元素
  3. 数据结构之并查集:并查集的介绍与Python代码实现——18
  4. db2 常用命令(一)
  5. 递归查找特定路径的所有特定文件
  6. vsftpd中文目录乱码的解决办法
  7. 前端实现红包雨功能_微信隐藏的7个实用功能,你都知道吗?真的白玩这么久微信...
  8. 4.24口语习语 听力复习
  9. “日薄西山”的摩托罗拉推出VR头显,这回靠谱吗?
  10. 台式电脑打开计算机只有c盘是咋回事,电脑只有C盘是怎么回事
  11. 报刊资料整理:云安全(cloud security)
  12. 使用 python-pptx-interface 将PPT转换成图片
  13. python删除第一行_python学习之删除DataFrame某一行/列内容
  14. 创业公司股权分配较好方案推荐
  15. 一名游戏制作人的设计感悟
  16. 基于Java+vue实现高校学科竞赛项目系统详细设计
  17. JS标签选择器以及节点操作
  18. 螣龙安科:迷宫勒索病毒——勒索受害者一年并且人数仍在增长
  19. 今日所学(一) [当日学习内容检查,如果有误,望大家赐教]
  20. wayland显示服务器,Ubuntu显示服务器:选Mir还是Wayland?

热门文章

  1. Python语言整理
  2. centos5 双网卡重启network服务提升IP占用 ping不通
  3. centos7支持xming
  4. canvas-小球碰壁折返
  5. ▩Dart-杂谈函数及类
  6. 4G来了,上海移动“开恩”下调2G、3G资费
  7. java 判断是否换行_如何在java中检测换行符
  8. Restful 风格开发 Spring MVC 的视图解析器---使用 beetl 模板引擎
  9. 2022强网拟态pwn-bfbf
  10. etc/sysconfig/selinux与/etc/selinux/config 区别