做者:小傅哥
博客:bugstack.cnjava
❝沉澱、分享、成長,讓本身和他人都能有所收穫!git
❞
在編程的路上你是否想過,用漢字寫一寫代碼?
程序員
最近有初學編程的小夥伴問小傅哥
,漢字能夠寫代碼嗎。本身英文很差,要是漢字能夠寫代碼就行了。難道你要的是「易語言」?其實並非,小夥伴也是學習 Java
的初學者,剛剛學習到 Spring
看着一片沒有註釋的代碼實在很差理解,要是都是漢字寫的,那不和讀做文同樣了嗎!github
說道註釋,我想到大部分程序員討厭的「兩件事」;web
其實對於學習編程來講,初學時寫寫案例,完成簡單的功能,反覆練習夯實基礎。數學和英文都還並非你的絆腳石,由於你不須要作複雜的邏輯處理,好比算法。也不須要查閱大量的資料,好比原版的英文資料以及國內沒有翻譯的技術書籍等。因此這個時候對你來講,只是須要不斷的學,不斷的寫。並逐步強加本身的數學和英文能力。算法
「回到咱們的說的」,既然你問漢字能夠寫代碼嗎。其實在 java
裏,原則上你能夠寫漢字的類
、屬性
、方法
,JVM虛擬機
也是能夠經過編譯執行的。只是這樣的代碼並不能很好的維護,甚至說亂碼了也很麻煩。再者,有人寫方言怎麼辦!編程
好!那麼咱們接下來就使用漢字的方式來編寫一段關於 SpringAop
的案例!編輯器
bugstack蟲洞棧
獲取,而且還能夠獲取更多原創案例。
爲了這個案例更加真實,咱們模擬電影清朝韋小寶時期
,太監入宮的過程。說白了也就是 Spring
的 AOP
面向切面,切
的編程。ide
在作案例以前,咱們先了解一下 AOP
的基本概念;工具
@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!
本代碼庫是做者小傅哥多年從事一線互聯網 Java 開發的學習歷程技術彙總,旨在爲你們提供一個清晰詳細的學習教程,側重點更傾向編寫Java核心內容。若是本倉庫能爲您提供幫助,請給予支持(關注、點贊、分享)!