logo

Lente AOP-zelfstudie

  1. Wat is AOP?
  2. Waar AOP gebruiken?
  3. AOP-concepten en terminologie
  4. Implementatie van voorjaars-AOP

Aspect Oriented Programming (AOP) is een aanvulling op OOPs in de zin dat het ook modulariteit biedt. Maar de belangrijkste eenheid van modulariteit is aspect dan klasse.

AOP verdeelt de programmalogica in afzonderlijke delen (de zogenaamde concerns). Het wordt gebruikt om de modulariteit te vergroten transversale zorgen .

A transversale zorg is een zorg die de hele applicatie kan beïnvloeden en die zo veel mogelijk op één locatie in code moet worden gecentraliseerd, zoals transactiebeheer, authenticatie, loggen, beveiliging enz.


Waarom AOP gebruiken?

Het biedt de plug-in manier om op dynamische wijze de extra zorg toe te voegen vóór, na of rond de feitelijke logica. Stel dat er 10 methoden in een klasse zijn, zoals hieronder weergegeven:

 class A{ public void m1(){...} public void m2(){...} public void m3(){...} public void m4(){...} public void m5(){...} public void n1(){...} public void n2(){...} public void p1(){...} public void p2(){...} public void p3(){...} } 

Er zijn 5 methoden die beginnen vanaf m, 2 methoden die beginnen vanaf n en 3 methoden die beginnen vanaf p.

Scenario begrijpen Ik moet het logboek bijhouden en een melding verzenden na het aanroepen van methoden die beginnen bij m.

Probleem zonder AOP We kunnen methoden aanroepen (die het logboek bijhouden en een melding verzenden) vanaf de methoden die beginnen met m. In een dergelijk scenario moeten we de code in alle vijf de methoden schrijven.

Maar als de klant in de toekomst zegt dat ik geen melding hoef te sturen, moet je alle methoden wijzigen. Het leidt tot het onderhoudsprobleem.

Oplossing met AOP We hoeven methoden niet vanuit de methode aan te roepen. Nu kunnen we de extra zorgen, zoals het bijhouden van het logboek, het verzenden van meldingen enz., definiëren in de methode van een klasse. De vermelding ervan wordt gegeven in het XML-bestand.

Als de klant in de toekomst zegt dat de notifier-functionaliteit moet worden verwijderd, hoeven we alleen het XML-bestand te wijzigen. Onderhoud is dus eenvoudig in AOP.

ddl versus dml

Waar AOP gebruiken?

AOP wordt meestal gebruikt in de volgende gevallen:

  • om declaratieve bedrijfsdiensten aan te bieden, zoals declaratief transactiebeheer.
  • Hiermee kunnen gebruikers aangepaste aspecten implementeren.

AOP-concepten en terminologie

AOP-concepten en terminologieën zijn als volgt:

  • Verbindingspunt
  • Advies
  • Puntsnede
  • Invoering
  • Doelobject
  • Aspect
  • Onderschepper
  • AOP-proxy
  • Weven

Verbindingspunt

Een join-punt is elk punt in uw programma, zoals de uitvoering van methoden, de afhandeling van uitzonderingen, veldtoegang enz. Spring ondersteunt alleen het join-punt voor de uitvoering van methoden.


Advies

Advies vertegenwoordigt een actie die door een aspect op een bepaald verbindingspunt wordt ondernomen. Er zijn verschillende soorten adviezen:

  • Vóór advies : het wordt uitgevoerd vóór een join-punt.
  • Na retouradvies : het wordt uitgevoerd nadat een verbindingspunt normaal is voltooid.
  • Na het gooien van advies : het wordt uitgevoerd als de methode wordt afgesloten door een uitzondering te genereren.
  • Na (eindelijk) advies : het wordt uitgevoerd na een join-punt, ongeacht het vertrek van het join-punt, of dit nu normaal of uitzonderlijk is.
  • Rond advies : Het wordt uitgevoerd voor en na een join-punt.

Puntsnede

Het is een expressietaal van AOP die aansluitpunten combineert.


Invoering

Het betekent de introductie van extra methoden en velden voor een type. Hiermee kunt u een nieuwe interface voor elk geadviseerd object introduceren.


Doelobject

Het is het doel, dat wil zeggen geadviseerd worden door een of meer aspecten. In het voorjaar wordt het ook wel een proxy-object genoemd, omdat Spring AOP wordt geïmplementeerd met behulp van runtime-proxy's.


Aspect

Het is een klasse die adviezen, joinpoints enz. bevat.


Onderschepper

Het is een aspect dat slechts één advies bevat.


AOP-proxy

Het wordt gebruikt om aspectcontracten te implementeren, gemaakt door het AOP-framework. Het zal in het voorjaarsframework een dynamische JDK-proxy of CGLIB-proxy zijn.


Weven

Het is het proces waarbij aspecten worden gekoppeld aan andere toepassingstypen of objecten om een ​​geadviseerd object te creëren. Weven kan worden gedaan tijdens het compileren, laden of runtime. Spring AOP voert weven uit tijdens runtime.

venster.open javascript

AOP-implementaties

AOP-implementaties worden verzorgd door:

  1. AspectJ
  2. Lente AOP
  3. JBoss AOP

Lente AOP

Spring AOP kan op 3 onderstaande manieren worden gebruikt. Maar de veelgebruikte aanpak is Spring AspectJ Annotation Style. Hieronder vindt u de 3 manieren waarop u Spring AOP kunt gebruiken:

  1. Door Spring1.2 Oude stijl (dtd-gebaseerd) (ook ondersteund in Spring3)
  2. Volgens AspectJ-annotatiestijl
  3. Door Spring XML-configuratiestijl (gebaseerd op schema)

Referentielinks

Lentebron AOP
Spring Source AOP-API
Wikipedia