做者:小傅哥
博客:https://bugstack.cnhtml
沉淀、分享、成长,让本身和他人都能有所收获!😜
在编程的路上你是否想过,用汉字写一写代码?
java
最近有初学编程的小伙伴问小傅哥
,汉字能够写代码吗。本身英文很差,要是汉字能够写代码就行了。难道你要的是易语言?其实并非,小伙伴也是学习 Java
的初学者,刚刚学习到 Spring
看着一片没有注释的代码实在很差理解,要是都是汉字写的,那不和读做文同样了吗!git
说道注释,我想到大部分程序员讨厌的两件事;程序员
其实对于学习编程来讲,初学时写写案例,完成简单的功能,反复练习夯实基础。数学和英文都还并非你的绊脚石,由于你不须要作复杂的逻辑处理,好比算法。也不须要查阅大量的资料,好比原版的英文资料以及国内没有翻译的技术书籍等。因此这个时候对你来讲,只是须要不断的学,不断的写。并逐步强加本身的数学和英文能力。github
回到咱们的说的,既然你问汉字能够写代码吗。其实在 java
里,原则上你能够写汉字的类
、属性
、方法
,JVM虚拟机
也是能够经过编译执行的。只是这样的代码并不能很好的维护,甚至说乱码了也很麻烦。再者,有人写方言怎么办!算法
好!那么咱们接下来就使用汉字的方式来编写一段关于 SpringAop
的案例!编程
bugstack虫洞栈
获取,而且还能够获取更多原创案例。有趣的案例方便新人快速理解AOP
设计模式
为了这个案例更加真实,咱们模拟电影清朝韦小宝时期
,太监入宫的过程。说白了也就是 Spring
的 AOP
面向切面,切
的编程。jvm
在作案例以前,咱们先了解一下 AOP
的基本概念;ide
@Aspect
,定义切面的注解@Pointcut
,切入点,通常会在方法上设定通配符表达式@Around
,环绕,也就是你本来的方法会在这里处理@Before
,前置处理@After
,后置处理紫禁城.内务府.敬事房.膑.太监膑.净身监管.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())); 紫禁城.内务府.敬事房.利器库.切除器具.java
@Component("切除") public class 切除器具 { public 太监膑 军刺切(太监膑 太监){ 太监.set性别(宦官.太监.name()); System.out.println("... 啊 ... ...老子被切面了!"+太监.get姓名()); return 太监; } }
Pointcut
,也就是会被切面处理的方法。紫禁城.内务府.敬事房.执刀人.张三丰执刀.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
。启动方法;紫禁城.内务府.敬事房.执刀人.张三丰执刀.java
待切身份:太监膑 [姓名=小德张, 年龄=9, 性别=男, 敬事日期=] 执行工具:军刺切 敬事前:---------准备下刀... ... ... 啊 ... ...老子被切面了!小德张 敬过后:---------切面完成... ... 切除状态:太监膑 [姓名=小德张, 年龄=9, 性别=太监, 敬事日期=2020-05-05] Process finished with exit code 0
我是很是建议先跑起来,多写代码后再慢慢的去探究原理!
廿四桥边廿四风,凭栏犹忆旧江东。夕阳返照桃花渡,柳絮飞来片片红。
,白色的柳絮在夕阳桃花的映托下就是成了片片红
。只要你敢学识渊博,就敢让你拥有翻江倒海之力。CodeGuide | 程序员编码指南 Go!
<br/>本代码库是做者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总,旨在为你们提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。若是本仓库能为您提供帮助,请给予支持(关注、点赞、分享)!