做者:小傅哥 博客:https://bugstack.cn - 包罗: Java 根底,面经手册,Netty4.x,手写SPRing,用Java实现JVM,重学Java设想形式,SpringBoot中间件开发,IDEA插件开发,DDD系统架构项目开发,字节码编程...
沉淀、分享、生长,让本身和别人都能有所收成!
一、媒介在编程的路上你能否想过,用汉字写一写代码?
比来有初学编程的小伙伴问小傅哥,汉字能够写代码吗。本身英文欠好,如果汉字能够写代码就好了。莫非你要的是易语言?其实并非,小伙伴也是进修 Java 的初学者,刚刚进修到 Spring 看着一片没有正文的代码其实欠好理解,如果都是汉字写的,那反面读做文一样了吗!
说到正文,我想到大部门法式员厌恶的两件事;
不喜好写正文不喜好他人不写正文其实关于进修编程来说,初学时写写案例,完成简单的功用,频频操练夯实根底。数学和英文都还并非你的绊脚石,因为你不需要做复杂的逻辑处置,好比算法。也不需要查阅大量的材料,好比原版的英文材料以及国内没有翻译的手艺册本等。所以那个时候对你来说,只是需要不竭的学,不竭的写。并逐渐强加本身的数学和英文才能。
回到我们的说的,既然你问汉字能够写代码吗。其其实 java 里,原则上你能够写汉字的类、属性、办法,JVM虚拟机也是能够通过编译施行的。只是如许的代码其实不能很好的维护,以至说乱码了也很费事。再者,有人写方言怎么办!
好!那么我们接下来就利用汉字的体例来编写一段关于 SpringAop 的案例!
二、开发情况JDK 1.8.0Spring 4.3.24.RELEASE本篇涉及的源码下载,能够存眷公家号:bugstack虫洞栈 获取,而且还能够获取更多原创案例。三、手艺实现为了那个案例愈加实在,我们模仿片子清朝韦小宝期间,寺人入宫的过程。说白了也就是 Spring 的 AOP 面向切面,切的编程。
在做案例之前,我们先领会一下 AOP 的根本概念;
@AsPEct,定义切面的注解@Pointcut,切入点,一般会在办法上设定通配符表达式@Around,环绕,也就是你本来的办法会在那里处置@Before,前置处置@After,后置处置1. 定义切面紫禁城.外务府.敬事房.膑.寺人膑.净身监管.java
@Aspect@Componentpublic 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 02. 效果图切面运行效果图
五、总结
汉字编程,猎奇能够尝尝,但别实的用到项目里。本文也只是通过如许的例子,向你展现进修过程的乐趣,成立一些进修过程的好感。比来加了良多刚入门进修编程的小伙伴,有良多小问号。好比; 切面运行效果图 我长短常建议先跑起来,多写代码后再渐渐的去探究原理比来听到一首诗,不错;廿四桥边廿四风,凭栏犹忆旧江东。落日返照桃花渡,柳絮飞来片片红。,白色的柳絮在落日桃花的映托下就是成了片片红。只要你敢学识渊博,就敢让你拥有排山倒海之力。
发表评论