Java企业开发学习笔记(1.5.1)采用配置方式使用AOP
该文章主要为完成实训任务,详细实现过程及结果见【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相关推荐
- Java企业开发学习笔记(1.2)利用组件注解符精简Spring配置文件
该文章主要为完成实训任务,详细实现过程及结果见[http://t.csdn.cn/iSeSH] 文章目录 一. 利用组件注解符精简Spring配置文件 1.1 创建新包 1.2 复制四个类 1.3 修 ...
- Java企业开发学习笔记(1.1)采用Spring配置文件管理Bean
该文章主要为完成实训任务,详细实现过程及结果见[http://t.csdn.cn/iK3aM] 文章目录 1. 创建Maven项目 2. 添加Spring依赖 3. 创建杀龙任务 4. 创建勇士类 5 ...
- Windows驱动开发学习笔记(一)—— 环境配置第一个驱动程序
Windows驱动开发学习笔记(一)-- 环境配置&第一个驱动程序 环境配置 第一个驱动程序 环境配置 安装VS2010:https://pan.baidu.com/s/1uZWWxCtB60 ...
- 【Android开发学习笔记之一】5大布局方式详解
Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 帧布局(FrameLayout):组件从屏幕左上方布局组件. 表格布局(Tabl ...
- JAVA企业级开发学习笔记
杂项 JAVA概述 JAVA API 在线文档 www.matools.com JAVA发展历史 1990 sun公司启动绿色计划,1992年创建java语言,1994gosling参加硅谷大会演示j ...
- java ndk_NDK开发学习笔记之 javah 及 ndk-build
上一篇写到 NDK 的基本使用及环境搭建. 并写了一个简单的 cpp 文件,但是有没有发现在编写 cpp 文件中的函数时,名字是不是很长,很容易写错! 那么,哟没有方法,自动生成函数名呢?没错,你猜对 ...
- java微信自动回复机器人开发(java微信开发学习笔记3)
微信自动回复机器人原理很简单,获取用户发送到后台的数据,然后调用机器人的api进行回复即可.我使用的茉莉机器人,官网地址如下: http://www.itpk.cn/ 茉莉机器人的api:http:/ ...
- JAVA串口开发学习笔记1
1.下载java Communications api开发包. 2.将win32com.dll拷贝入C:\j2sdk1.4.2_04\bin 3.将comm.jar拷贝入C:\j2sdk1.4.2_ ...
- python 输入输出转web_云计算开发学习笔记:Python3 输入和输出方式
Python两种输出值的方式: 表达式语句和 print() 函数.第三种方式是使用文件对象的 write() 方法,标准输出文件可以用 sys.stdout 引用. 如果你希望输出的形式更加多样,可 ...
最新文章
- 从java里调用r jri的设置方法_从Java里调用R – JRI的设置方法
- HTML 5新增的元素
- 数据结构之并查集:并查集的介绍与Python代码实现——18
- db2 常用命令(一)
- 递归查找特定路径的所有特定文件
- vsftpd中文目录乱码的解决办法
- 前端实现红包雨功能_微信隐藏的7个实用功能,你都知道吗?真的白玩这么久微信...
- 4.24口语习语 听力复习
- “日薄西山”的摩托罗拉推出VR头显,这回靠谱吗?
- 台式电脑打开计算机只有c盘是咋回事,电脑只有C盘是怎么回事
- 报刊资料整理:云安全(cloud security)
- 使用 python-pptx-interface 将PPT转换成图片
- python删除第一行_python学习之删除DataFrame某一行/列内容
- 创业公司股权分配较好方案推荐
- 一名游戏制作人的设计感悟
- 基于Java+vue实现高校学科竞赛项目系统详细设计
- JS标签选择器以及节点操作
- 螣龙安科:迷宫勒索病毒——勒索受害者一年并且人数仍在增长
- 今日所学(一) [当日学习内容检查,如果有误,望大家赐教]
- wayland显示服务器,Ubuntu显示服务器:选Mir还是Wayland?