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
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>
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 {} }
<!--声明目标类--> <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>
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 (m.sbmmt.com).