作者:小傅哥 博客:https:bugstack。cn包含:Java基础,面经手册,Netty4。x,手写Spring,用Java实现JVM,重学Java设计模式,SpringBoot中间件开发,IDEA插件开发,DDD系统架构项目开发,字节码编程。。。 沉淀、分享、成长,让自己和他人都能有所收获!一、前言 在编程的路上你是否想过,用汉字写一写代码? 最近有初学编程的小伙伴问小傅哥,汉字可以写代码吗。自己英文不好,要是汉字可以写代码就好了。难道你要的是易语言?其实并不是,小伙伴也是学习Java的初学者,刚刚学习到Spring看着一片没有注释的代码实在不好理解,要是都是汉字写的,那不和读作文一样了吗! 说到注释,我想到大部分程序员讨厌的两件事;不喜欢写注释不喜欢别人不写注释 其实对于学习编程来说,初学时写写案例,完成简单的功能,反复练习夯实基础。数学和英文都还并不是你的绊脚石,因为你不需要做复杂的逻辑处理,比如算法。也不需要查阅大量的资料,比如原版的英文资料以及国内没有翻译的技术书籍等。所以这个时候对你来说,只是需要不断的学,不断的写。并逐步强加自己的数学和英文能力。 回到我们的说的,既然你问汉字可以写代码吗。其实在java里,原则上你可以写汉字的类、属性、方法,JVM虚拟机也是可以通过编译执行的。只是这样的代码并不能很好的维护,甚至说乱码了也很麻烦。再者,有人写方言怎么办! 好!那么我们接下来就使用汉字的方式来编写一段关于SpringAop的案例!二、开发环境JDK1。8。0Spring4。3。24。RELEASE本篇涉及的源码下载,可以关注公众号:bugstack虫洞栈获取,并且还可以获取更多原创案例。三、技术实现 为了这个案例更加真实,我们模拟电影清朝韦小宝时期,太监入宫的过程。说白了也就是Spring的AOP面向切面,切的编程。 在做案例之前,我们先了解一下AOP的基本概念;Aspect,定义切面的注解Pointcut,切入点,一般会在方法上设定通配符表达式Around,环绕,也就是你原本的方法会在这里处理Before,前置处理After,后置处理1。定义切面 紫禁城。内务府。敬事房。膑。太监膑。净身监管。javaAspectComponentpublicclass净身监管{Pointcut(execution(public紫禁城。内务府。敬事房。利器库。。。军刺切(。。)))publicvoid监管员(){}Before(监管员())publicvoid敬事前(){System。out。println(敬事前:准备下刀。。。。。。);}After(监管员())publicvoid敬事后(){System。out。println(敬事后:切面完成。。。。。。);}Around(监管员())publicObjectaroundMethod(ProceedingJoinPointpjp)throwsThrowable{System。out。println(待切身份:pjp。getArgs()〔0〕);System。out。println(执行工具:pjp。getSignature()。getName());获得传递对象,并做处理太监膑太监(太监膑)pjp。getArgs()〔0〕;SimpleDateFormattimeFormatnewSimpleDateFormat(yyyyMMdd);太监。set敬事日期(timeFormat。format(newDate()));此处可以传递更改后的参数Objectobjpjp。proceed(newObject〔〕{太监});returnobj;}}Aspect,定义切面类,用于处理程序中的切面编程操作。Pointcut(execution(public紫禁城。内务府。敬事房。利器库。。。军刺切(。。))),定义切点处,对那些方法进行执行切面操作。除了这样的操作外,还可以定义成自定义注解。那么后续只要把某个你需要的方法上面添加这样的自定义注解,就可以被AOP拦截。Before(监管员())、After(监管员()),记录切面执行前后的记录。Around(监管员()),用于环绕方法增强,可以这里去处理方法中的一些属性信息,比如添加给某个字段添加时间。太监。set敬事日期(timeFormat。format(newDate()));2。设置切面可执行方法 紫禁城。内务府。敬事房。利器库。切除器具。javaComponent(切除)publicclass切除器具{public太监膑军刺切(太监膑太监){太监。set性别(宦官。太监。name());System。out。println(。。。啊。。。。。。老子被切面了!太监。get姓名());return太监;}}这里类的方法就是上面定义的切点,Pointcut,也就是会被切面处理的方法。3。执行切面操作类 紫禁城。内务府。敬事房。执刀人。张三丰执刀。javapublicclass张三丰执刀{publicstaticvoidmain(String〔〕args){ApplicationContextctxnewClassPathXmlApplicationContext(皇太极。xml);太监刑太监行刑ctx。getBean(太监刑,太监刑。class);太监膑太监new太监膑();太监。set姓名(小德张);太监。set年龄(9);太监。set性别(宦官。男。name());太监太监行刑。执行切除(太监);System。out。println(r切除状态:太监);}}首先这里定义了获取Spring注解的Application,用于我们获取Bean。接下来定义一个对象类,主要传递具体参数信息交给执行切面的方法,进行操作。最后输出结果信息,也就是我们可以看到具体被切面操作的方法。四、测试结果1。执行内容 启动方法;紫禁城。内务府。敬事房。执刀人。张三丰执刀。java待切身份:太监膑〔姓名小德张,年龄9,性别男,敬事日期〕执行工具:军刺切敬事前:准备下刀。。。。。。。。。啊。。。。。。老子被切面了!小德张敬事后:切面完成。。。。。。切除状态:太监膑〔姓名小德张,年龄9,性别太监,敬事日期20200505〕Processfinishedwithexitcode02。效果图 切面运行效果图 五、总结汉字编程,好奇可以试试,但别真的用到项目里。本文也只是通过这样的例子,向你展示学习过程的乐趣,建立一些学习过程的好感。最近加了很多刚入门学习编程的小伙伴,有很多小问号。比如;切面运行效果图我是非常建议先跑起来,多写代码后再慢慢的去探究原理最近听到一首诗,不错;廿四桥边廿四风,凭栏犹忆旧江东。夕阳返照桃花渡,柳絮飞来片片红。,白色的柳絮在夕阳桃花的映衬下就是成了片片红。只要你敢学识渊博,就敢让你拥有翻江倒海之力。