El primer tipo: configuración de anotación AOP
Configuración de anotación AOP (implementada utilizando la biblioteca de clases SUPSJ), dividida aproximadamente en tres pasos:
1. Use la anotación @Aspect para definir una sección, defina el punto de entrada (@Pointcut) y el tipo de notificación (@before,@después de returar,@después,@después de retrasar,@alrededor).
2. Desarrolle clases que necesitan ser interceptadas.
3. Configure la sección en el XML. En este caso, será administrado por Spring AOP Container.
Además, debe hacer referencia al paquete JARSJ de AspectJ: spectjweaver.jar aspectojrt.jar
Ejemplo:
User.javapackage com.bjsxt.model; () {Retrocede la contraseña; {public void save (usuario de usuario);
Implementar la interfaz:
paquete com.bjsxt.dao.impl; void save (usuario de usuario) {system.out.println ("¡Guardar el usuario11d!");
Clase de operación:
paquete com.bjsxt.service; import com.bjsxt.dao.userdao; ; userDao;
Únete a AOP
paquete com.bjsxt.aop; Aspecto; . .model .user)) ")*/ @bebore (" mymethod () ") public void antes () {System.out.println (" Method Staet ");} @after (" mymethod () ") public void después () {System.out.println ("Método después"); .println ("método después de la toma"); ");}}
Archivo de configuración
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.orgg /2001/xmlschema-instance "xmlns: context =" http://www.springframework.org/schema/context "xmlns: aop =" http://www.springframework.org/sche ma/aop "xsi: schemalatation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/esquema/contexto http: //www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/sc hema/aop/treing-aop -3.1 .xsd "> <!-para agregar las últimas 2 líneas-> <contexto: anotación-config /> <context: component-scan base-paquete =" com.bjsxt " /> <!-escaneo automático -> <aop: spectj-autoProxy/> <!-para agregar esta línea-> </beans>
Clase de prueba:
paquete com.bjsxt.service; Inverso del control Public Class UserServiceTest {@Test Public void testAdd () lanza la excepción {classpathXMLApPlicationContext CTX = new ClassPathXMLAPPlic AtionContext ("ApplicationContext.xml") println (servicio.getClass ());
resultado:
Clase com.bjsxt.service.userservice $$ Mentorbycglib $$ 7B201784 Estadísticas de Method save11d!
Aviso:
@Aspect: significa que esta clase es una clase faceta
@Componet: Debido a que la primavera debe administrarse como una clase tangente, esta inicialización de clase debe agregarse a la administración de primavera durante la inicialización;
@Befoe: Lógica del punto de entrada (consejo)
Ejecución ...: sintaxis de corte de puntos
El segundo tipo: Configuración XML AOP
Lo mismo que el anterior: solo el archivo de configuración es diferente
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.orgg /2001/xmlschema-instance "xmlns: context =" http://www.springframework.org/schema/context "xmlns: aop =" http://www.springframework.org/sche ma/aop "xsi: esquemalatoration = = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/esquema/contexto http: //www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/sc hema/aop/treing-aop -3.1 .xsd "> <!-para agregar las últimas 2 líneas-> <contexto: anotación-config /> <context: component-scan base-paquete =" com.bjsxt " /> <bean id =" loginterceptor "> < /bean> <aop: config> <aop: pointCut Expression =" Execution (public * com.bjsxt.service .. *. add (..)) "id =" ServicePointCut " /> <aop: ID de aspecto = "lo gaspect" ref = "loginterceptor"> <aop: antes del método = "antes" PointCut-ref = "ServicePointCut"/> </aop: aspecto> </aop: config> </beans>
La siguiente <Beans> es la etiqueta de configuración de resorte y varias propiedades importantes en frijoles:
xmlns:
Es el formato de análisis de documento XML predeterminado, es decir, Spring Beans. La dirección es http://www.springframework.org/schema/beans.
Al establecer esta propiedad, todos los atributos declarados en los frijoles se pueden usar directamente a través de <>, como <Bean>, etc.
XMLNS: XSI:
Es una especificación que XML necesita cumplir.
XMLNS: AOP:
Este es el punto clave, y son algunas especificaciones semánticas que debemos usar aquí, que están relacionadas con la AOP orientada a tangentes.
XMLNS: TX:
Contenido de configuración relacionado con la transacción en la primavera.
Un archivo XML solo puede declarar una especificación de análisis semántico predeterminado.
Por ejemplo, en el XML anterior, solo un frijoles es el valor predeterminado, y los otros deben usarse a través de etiquetas específicas, como AOP, que tiene muchos atributos. . Por ejemplo, el AOP: Configuración arriba.
Del mismo modo, si los XMLN predeterminados se configuran con especificaciones de análisis semántico relacionados con AOP, entonces puede escribir directamente una etiqueta como configuración en XML.
Los anteriores son los dos métodos de configuración de Spring AOP. Hay más artículos sobre los métodos de configuración de AOP para compartir con usted más tarde.