securitycontextholder getname getcontext getauthentication current authenticationprincipal java spring spring-mvc log4j aspectj

java - getname - spring security get current user



logueando con AOP en primavera? (2)

Es necesario realizar varios pasos para integrar Aspectj,

  1. Instale AspectJ, http://www.cs.utep.edu/cheon/cs3360/project/proj1/installing-aspectj.txt
  2. Agregue su aop.xml a META-INF / aop.xml en su proyecto
  3. Agregue aspectjrt-xx0.jar y aspectjweaver-xx0.jar en su proyecto classpath
  4. Agregue -javaagent: / path a aspectj installation / aspectjweaver-1.7.0.jar a la JVM de su servidor.

Aquí hay un ejemplo de aop.xml,

<aspectj> <aspects> <aspect name="test.MySimpleLoggerAspect" /> </aspects> <weaver> <include within="test.myproject.*" /> </weaver> </aspectj>

Si ya está usando Spring, entonces es mejor usar Spring para simplificar su configuración, aquí hay un buen ejemplo, http://forum.springsource.org/showthread.php?61551-Bean-Factory-is-not-set-for-BeanConfigurerSupport

Soy nueva para la primavera en mi oficina. Así que no hay una guía para mí.

Necesito implementar el registro con el AOP usando el log4j .

He implementado el registro sin AOP en el ejemplo básico de spring MVC ?

¿También hizo la pequeña muestra en AOP usando aspectJ sin iniciar sesión (acaba de hacer el Sysout )?

¿No sé cómo integrarlo?

¿Puede alguien por favor darme una idea de puesta en marcha?

Las buenas respuestas son definitivamente apreciadas ...


La primavera hace que sea realmente fácil para nosotros hacer uso de AOP. Aquí hay un ejemplo simple de registro:

@Aspect public class MyLogger { private Logger log = Logger.getLogger(getClass()); @After("execution(* com.example.web.HomeController.*(..))") public void log(JoinPoint point) { log.info(point.getSignature().getName() + " called..."); } }

Luego simplemente configure su applicationContext.xml (o equivalente):

<aop:aspectj-autoproxy> <aop:include name="myLogger"/> </aop:aspectj-autoproxy> <bean id="myLogger" class="com.example.aspect.MyLogger"/>

Notará que en la clase MyLogger especifiqué @After justo arriba del método. Esto se denomina consejo y básicamente especifica que este método de "registro" se llamará después del método en cuestión. Otras opciones incluyen @Before, @Around, @AfterThrowing .

La expresión "execution(* com.example.web.HomeController.*(..))" se denomina expresión de corte de punto y especifica a qué nos dirigimos (en este caso, todos los métodos de la clase HomeController).

PS El espacio de nombres aop ( xmlns:aop="http://www.springframework.org/schema/aop" ) y la ubicación del esquema (depende de la versión) deberán agregarse a su applicationContext.xml en la parte superior. He aquí mi arreglo:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">