Heim  >  Artikel  >  Java  >  Spring Framework Learning (6) AOP

Spring Framework Learning (6) AOP

黄舟
黄舟Original
2016-12-29 13:21:021293Durchsuche

Aspektorientierte Programmierung (AOP) unterscheidet sich grundlegend von OOP. Bei der Verwendung von AOP wird das Programmiersystem in Aspekte oder Belange und nicht in Objekte in OOP unterteilt.

Einführung von AOP

Bei der objektorientierten Verwendung von OOP ist eine Codeduplizierung unvermeidlich, und bei Verwendung der objektorientierten Programmierung kann diese Duplizierung beispielsweise nicht vermieden werden. Führen Sie bei der Beurteilung der Benutzerberechtigungen die entsprechende Methode entsprechend den entsprechenden Berechtigungen aus. Wenn Sie das Codierungsformat im Servlet festlegen, wird derselbe Code häufig angezeigt und hat nichts mit dem Geschäft zu tun Das Ergebnis wird beim Ausführen verstümmelter Code angezeigt. Diese Duplizierung des Codes macht die Codierung nicht nur umständlich, sondern erschwert auch die Wartung. AOP organisiert diese Codes, fügt den Code, der ein bestimmtes Aspektproblem löst, separat in ein bestimmtes Modul ein und bindet ihn dann in das Programm ein.

Begriffe in AOP

Spring Framework Learning (6) AOP

Aspekt: ​​Querschnittsfunktionen,
abstrakte Klassen oder Schnittstellen, das Wichtigste an der AOP-Programmierung ist Querschnittsmerkmale werden identifiziert.
(Aspekte, ähnlich der Zeichencodierungsfunktion)
Hinweis: Die spezifische Implementierung der Querschnittsfunktion muss anhand der tatsächlichen Situation analysiert werden, ob sie vor der Operation des Zielobjekts und nach der Operation erfolgt Operation, es ist nach
Beratung.
(erweitert, ähnlich dem Zeichencodierungsfilter)
Pointcut: Einstiegspunkt, der die Einschränkungen der Anwendung übergreifender Funktionen beschreibt. Nicht alle Prozesse sind erforderlich. Die verwendbaren Prozesse sind Einstiegspunkte
(ähnlich Filterübereinstimmungsregeln /*)
Joinpoint: Verbindungspunkt oder der Zeitpunkt, zu dem eine Komponente dem Prozess beitritt, z. B. das Festlegen von Eigenschaften, das Aufrufen von Methoden usw. Spring unterstützt nur Verbindungspunkte für Methodenaufrufe, während einige andere Frameworks Attribute Connection unterstützen Punkte wie: AspectJ,
(Filterregeln ähnlich den Filtern REQUEST, FORWARD)
Weben: Stitching, der Prozess des Anwendens von Komponenten auf Geschäftsprozesse, wird Stitching oder Weben genannt.
(Ähnlich dem Prozess der Konfiguration von Filtern für das Web. CGLIB kann verwendet werden (Proxy-Vorgänge werden durch Vererbung abgeschlossen).
Ziel, Ziel, das eigentliche Objekt des Geschäftsbetriebs


Beispiel: Das Festlegen des Zeichenkodierungsformats wird als Aspekt betrachtet, und der Interceptor ist eine Advice-Erweiterung.

<!-- 字符编码过滤器-->
<filter>
<filter-name>characterFilter</filter-name>
<filter-class>com.bjpowernode.egov.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>characterFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
Filterklasse

public class CharacterEncodingFilter implements Filter {
 
   @Override
   public void destroy() {}
 
   @Override
   public void doFilter(ServletRequest request, ServletResponse response,
      FilterChainchain) throws IOException, ServletException {
           request.setCharacterEncoding("GB18030");
           chain.doFilter(request,response);
   }
 
   @Override
   publicvoid init(FilterConfig filterConfig) throws ServletException {}
}
Dadurch entfällt die Notwendigkeit, die Codierung in jedem Servlet festzulegen. .



Verwendung von AOP im Spring-Framework

1, JAR-Paket kopieren

Spring Framework Learning (6) AOP

2, in der Spring-Konfigurationsdatei Namespace- und Einschränkungsdateien hinzufügen

AOP-Funktion aktivieren: Fügen Sie einfach das Tag hinzu und Sie können es abrufen.

Spring Framework Learning (6) AOP

3, schreiben Sie die Proxy-Klasse und die erweiterte Klasse

Spring Framework Learning (6) AOP

4, deklariert durch die Konfigurationsdatei

<!--声明目标类-->
<bean id="targetclass" class="com.spring.aop.TargetClass"></bean>

<!--声明扩展类-->
<bean id="extendsclass" class="com.spring.aop.extendsClass"></bean>

<!--织入扩展类,并声明在哪个方法上执行扩展类-->
<aop:config>
	<aop:aspect id="extendAspect" ref="">
		<aop:pointcut expression="execution(public ** (..))" id="extendsPoincat">
		<!--在目标方法执行前执行的方法-->
		<aop:before method="beforemethod" pointcut-ref="extendsPoincat" />
		<!--在目标方法执行后执行的方法-->
		<aop:after method="aftermethod" pointcut-ref="extendsPoincat" />
	</aop:aspect>
</aop:config>
5. Wenn der Test

erfolgreich ist, wird beim Ausführen der Zielmethode targetmethod() in der Zielklasse zuerst die Methode beforemethod() in der Erweiterungsklasse und dann die Zielmethode ausgeführt und schließlich die Methode aftermethod ().

Das heißt, wir müssen die Targetmethod-Methode nur manuell aufrufen. Die beiden Methoden-Frameworks in der Erweiterungsklasse lesen die Konfigurationsdatei während der Ausführung, erhalten die entsprechenden Informationen und fügen uns automatisch die erweiterte Methode hinzu. .
Der Test ist auf jeden Fall erfolgreich. Wenn Sie es nicht glauben, können Sie es selbst versuchen.

Vorteile der Verwendung von AOP im Spring-Framework

Aop ist in den IOC-Container von Spring integriert, erweitert und Einstiegspunkte sind alles Javabeans, die in derselben Datei konfiguriert werden können
Wie andere Teile von Spring , es kann sein Jede Transplantation zwischen verschiedenen Anwendungsservern
Spring implementiert die Abfangschnittstelle von Aop, sodass Benutzer sich nicht an eine bestimmte Abfangschnittstelle binden müssen

Aops aspektorientierte Programmierideen durchbrechen den objektorientierten Weg Was wir im Denken lernen müssen, ist nicht nur die Verwendung von AOP, sondern auch aspektorientiertes Denken.

Das Obige ist der Inhalt des Spring Framework Learning (6) AOP. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn