ทำความเข้าใจ Spring AOP + AspectJ annotation เบื้องต้น

การพัฒนา Java Application Project ก็ต้องนึกถึง Spring Framework เป็นชื่อแรกอย่างแน่นอน อาจจะเพราะด้วยว่าเป็นที่นิยม พูดถึงชื่อนี้กับเพื่อนสาย Java ด้วยกันก็รู้จัก

Spring มี Projects มากมาย

Spring Framework มี Projects ที่ทีมงานพัฒนาและปล่อยออกมาเป็น Open Source มากมายหลาย Project เช่น Spring boot, Spring framework ,Spring Data , Spring Cloud ฯลฯ มากมาย ซึ่ง Spring Framework เป็น 1 ใน Project ของ Spring ที่ภายในมี Feature อีกมากมาย

Features ของ Spring Framework

  • Core technologies: dependency injection, events, resources, i18n, validation, data binding, type conversion, SpEL, AOP.
  • Testing: mock objects, TestContext framework, Spring MVC Test, WebTestClient.
  • Data Access: transactions, DAO support, JDBC, ORM, Marshalling XML.
  • Spring MVC and Spring WebFlux web frameworks.
  • Integration: remoting, JMS, JCA, JMX, email, tasks, scheduling, cache.
  • Languages: Kotlin, Groovy, dynamic languages.

AOP คือ Feature นึง ใน Spring Framework

AOP ย่อมาจาก aspect-oriented programming ในความเข้าใจของผมก็เป็นสิ่งที่ช่วยลดความซ้ำซ้อนของ Code และเป็นสิ่งที่จะเอามาช่วยดักจับการทำงานของ Application ของเราได้ เช่น การบันทึก Transaction Log ของ Application เพื่อเก็บลง Database โดยไม่ต้องไปใส่ Logic การ Save Transaction นี้ในทุก ๆ Methods ครับ ลดความซ้ำซ้อนของ Code ไปได้อย่างมาก

Annotation Aspectj ที่ใช้งานบ่อย

จะมีด้วยกัน 5 ตัวอย่างคือ

  1. @After — จะเริ่มทำงานหลังจากที่ methods นั้นถูกเรียกการทำงานไปแล้ว
  2. @AfterReturning — จะทำงานหลังจากที่ Mrthods นั้น ๆ ถูกเรียกการทำงานไปแล้ว โดยนิยมใช้งานร่วมกับ Method ที่มีการ Return ค่า เพราะถ้าใช้ร่วมกับ Method ที่ไม่มีการ return ค่า (void) จะได้ค่า “returning” เป็น null
  3. @AfterThrowing — จะทำงานหลังจากที่ Methods นั้น ๆ มีการเกิดข้อผิดพลาดและการเรียกใช้ throw exception ต่าง ๆ จะสามารถดักจับ error ต่าง ๆ ได้
  4. @Around — จะทำงานร่วมกัน ก่อน ระหว่าง และหลัง ของ Methods นั้น ๆ ทำงานแต่จะพิเศษตรงที่เป็นการรวม @After ทั้ง 4 annotation ด้านบน

ตัวอย่างการเรียกใช้งาน

  1. สร้าง Java Application Project ขึ้นมาเลือกเป็น maven-archetype-quickstart
  2. เพิ่ม dependencies เข้าไปในไฟล์ pom.xml

Written by

Senior Developer @Telecom, Full Stack Developer [Subscribe Me @poolsawat.com]

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store