诺禾-编程

说道注释,我想到大局部程序员厌恶的两件事;

不喜欢写注释
不喜欢他人不写注释
其实关于学习编程来说,初学时写写案例,完成简单的功用,重复练习夯实根底。数学和英文都还并不是你的绊脚石,由于你不需求做复杂的逻辑处置,比方算法。也不需求查阅大量的材料,比方原版的英文材料以及国内没有翻译的技术书籍等。所以这个时分对你来说,只是需求不时的学,不时的写。并逐渐强加本人的数学和英文才能。

回到我们的说的,既然你问汉字能够写代码吗。其真实 java 里,准绳上你能够写汉字的类、属性、办法,JVM虚拟机也是能够经过编译执行的。只是这样的代码并不能很好的维护,以至说乱码了也很费事。再者,有人写方言怎样办!

好!那么我们接下来就运用汉字的方式来编写一段关于 SpringAop 的案例!

二、开发环境
JDK 1.8.0
Spring 4.3.24.RELEASE
本篇触及的源码下载,能够关注公众号:bugstack虫洞栈 获取,并且还能够获取更多原创案例。
三、技术完成
为了这个案例愈加真实,我们模仿电影清朝韦小宝时期,太监入宫的过程。说白了也就是 Spring 的 AOP 面向切面,切的编程。

在做案例之前,我们先理解一下 AOP 的根本概念;

@Aspect,定义切面的注解
@Pointcut,切入点,普通会在办法上设定通配符表达式
@Around,环绕,也就是你本来的办法会在这里处置
@Before,前置处置
@After,后置处置

  1. 定义切面
    紫禁城.外务府.敬事房.膑.太监膑.净身监管.java

@Aspect
@Component
public class 净身监管 {
@Pointcut(“execution(public * 紫禁城.外务府.敬事房.利器库….军刺切(…))")
public void 监管员(){
}
@Before(“监管员()”)
public void 敬事前(){
System.out.println(“敬事前:---------准备下刀… …”);
}
@After(“监管员()”)
public void 敬事后(){
System.out.println(“敬事后:---------切面完成… …”);
}
@Around(“监管员()”)
public Object aroundMethod(ProceedingJoinPoint pjp) throws Throwable {
System.out.println(“待切身份:”+pjp.getArgs()[0]);
System.out.println(“执行工具:”+pjp.getSignature().getName());
//取得传送对象,并做处置
太监膑 太监 = (太监膑) pjp.getArgs()[0];
SimpleDateFormat timeFormat = new SimpleDateFormat(“yyyy-MM-dd”);
太监.set敬事日期(timeFormat.format(new Date()));
//此处能够传送更改后的参数
Object obj = pjp.proceed(new Object[]{太监});
return obj;
}
}
@Aspect,定义切面类,用于处置程序中的切面编程操作。
@Pointcut("execution(public * 紫禁城.外务府.敬事房.利器库…
.军刺切(…))”),定义切点处,对那些办法停止执行切面操作。除了这样的操作外,还能够定义成自定义注解。那么后续只需把某个你需求的办法上面添加这样的自定义注解,就能够被 AOP 拦截。
@Before(“监管员()”)、@After(“监管员()”),记载切面执行前后的记载。
@Around(“监管员()”),用于环绕办法加强,能够这里去处置办法中的一些属性信息,比方添加给某个字段添加时间。太监.set敬事日期(timeFormat.format(new Date()));
2. 设置切面可执行办法
紫禁城.外务府.敬事房.利器库.切除用具.java

@Component(“切除”)
public class 切除用具 {
public 太监膑 军刺切(太监膑 太监){
太监.set性别(宦官.太监.name());
System.out.println("… 啊 … …老子被切面了!"+太监.get姓名());
return 太监;
}
}
这里类的办法就是上面定义的切点,Pointcut,也就是会被切面处置的办法。
3. 执行切面操作类
紫禁城.外务府.敬事房.执刀人.张三丰执刀.java

public class 张三丰执刀 {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext(“皇太极.xml”);
太监刑 太监行刑 = ctx.getBean(“太监刑”,太监刑.class);
太监膑 太监 = new 太监膑();
太监.set姓名(“小德张”);
太监.set年龄(“9”);
太监.set性别(宦官.男.name());
太监 = 太监行刑.执行切除(太监);
System.out.println("\r\n切除状态:"+太监);
}
}
首先这里定义了获取 Spring 注解的 Application,用于我们获取 Bean 。
接下来定义一个对象类,主要传送详细参数信息交给执行切面的办法,停止操作。
最后输出结果信息,也就是我们能够看到详细被切面操作的办法。
四、测试结果

  1. 执行内容
    启动办法;紫禁城.外务府.敬事房.执刀人.张三丰执刀.java

待切身份:太监膑 [姓名=小德张, 年龄=9, 性别=男, 敬事日期=]
执行工具:军刺切
敬事前:---------准备下刀… …
… 啊 … …老子被切面了!小德张
敬事后:---------切面完成… …
切除状态:太监膑 [姓名=小德张, 年龄=9, 性别=太监, 敬事日期=2020-05-05]
Process finished with exit code 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值