※南投搬家公司費用需注意的眉眉角角,別等搬了再說!
上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務
作者:小傅哥
博客:https://bugstack.cn
沉澱、分享、成長,讓自己和他人都能有所收穫!
一、前言
在編程的路上你是否想過,用漢字寫一寫代碼?
最近有初學編程的小夥伴問小傅哥
,漢字可以寫代碼嗎。自己英文不好,要是漢字可以寫代碼就好了。難道你要的是易語言?其實並不是,小夥伴也是學習 Java
的初學者,剛剛學習到 Spring
看着一片沒有註釋的代碼實在不好理解,要是都是漢字寫的,那不和讀作文一樣了嗎!
說道註釋,我想到大部分程序員討厭的兩件事;
- 不喜歡寫註釋
- 不喜歡別人不寫註釋
其實對於學習編程來說,初學時寫寫案例,完成簡單的功能,反覆練習夯實基礎。數學和英文都還並不是你的絆腳石,因為你不需要做複雜的邏輯處理,比如算法。也不需要查閱大量的資料,比如原版的英文資料以及國內沒有翻譯的技術書籍等。所以這個時候對你來說,只是需要不斷的學,不斷的寫。並逐步強加自己的數學和英文能力。
回到我們的說的,既然你問漢字可以寫代碼嗎。其實在 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
2. 效果圖
五、總結
-
漢字編程,好奇可以試試,但別真的用到項目里。本文也只是通過這樣的例子,向你展示學習過程的樂趣,建立一些學習過程的好感。
-
最近加了很多剛入門學習編程的小夥伴,有很多小問號。比如;
我是非常建議先跑起來,多寫代碼后再慢慢的去探究原理!
-
最近聽到一首詩,不錯;
廿四橋邊廿四風,憑欄猶憶舊江東。夕陽返照桃花渡,柳絮飛來片片紅。
,白色的柳絮在夕陽桃花的映襯下就是成了片片紅
。只要你敢學識淵博,就敢讓你擁有翻江倒海之力。
六、彩蛋
CodeGuide | 程序員編碼指南 Go!
本代碼庫是作者小傅哥多年從事一線互聯網 Java 開發的學習歷程技術匯總,旨在為大家提供一個清晰詳細的學習教程,側重點更傾向編寫Java核心內容。如果本倉庫能為您提供幫助,請給予支持(關注、點贊、分享)!
七、推薦閱讀
- 用Java實現JVM虛擬機(漢字真的可以處理為關鍵字進行編碼)
- 重學 Java 設計模式:實戰單例模式(Effective Java 作者推薦使用枚舉的方式解決單例模式)
- 重學 Java 設計模式:實戰原型模式(多套試卷亂序題目)
- 重學 Java 設計模式:實戰建造者模式(裝修套餐選配)
- 重學 Java 設計模式:實戰抽象工廠模式(Redis集群使用升級)
- 重學 Java 設計模式:實戰工廠方法模式(多種商品發獎)
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面
網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。