Spring AOP es una de las partes esenciales de la estructura de muelles. En la etapa muy básica, el marco de primavera se basa en IoC y AOP. En el curso oficial de Spring hay una diapositiva en la que dice:
El AOP es una de las partes más importantes del framework.
El punto clave para entender cómo AOP en la primavera funciona es que cuando se escribe un aspecto con la primavera que instrumento del marco con la construcción de un proxy para sus objetos, con un JDKDynamicProxy
si su bean implementa una interfaz o mediante CGLIB si su bean no implementa ninguna interfaz. Recuerde que debe tener cglib 2.2 en su class-path si está utilizando Spring antes de la versión 3.2. A partir de Spring 3.2 es inútil porque cglib 2.2 se incluyó en el núcleo.
El marco en la creación de frijol crearán un proxy que envuelve los objetos y añade transversales responsabilidades preocupaciones de corte tales como la seguridad, la gestión de transacciones, registro y así sucesivamente.
La creación de proxy de esta manera se aplicará a partir de una expresión punto de corte que los instrumentos del marco para decidir qué habas y los métodos se creará como proxies. El consejo será más responsable que tu código. Recuerde que en este proceso el punto de corte captura solo los métodos públicos que no se declaran como finales.
Ahora, mientras que en Spring AOP, el Tejido de Aspectos será realizado por el contenedor al inicio del contenedor, en AspectJ tiene que realizar esto con una compilación posterior de su código a través de la modificación del código de bytes. Por esta razón, en mi opinión, el enfoque de Spring es más simple y más manejable que AspectJ.
Por otro lado, con el AOP primavera no se puede utilizar todo el poder de la AOP, porque la aplicación se realiza a través de servidores proxy y no con la modificación a través de su código.
Al igual que en AspectJ, puede usar tejido de tiempo de carga en SpringAOP. Puede beneficiarse de esta característica en la primavera se implementa con un agente y configuraciones especiales, @EnabledLoadWeaving
o en XML. Puede usar el espacio de nombre como ejemplo. Sin embargo, en Spring AOP no puedes interceptar todos los casos. Por ejemplo, el comando new
no es compatible con Spring AOP.
Sin embargo, en Spring AOP puede beneficiarse del uso de AspectJ mediante el uso del método de fábrica aspectof
en el bean de configuración de primavera.
Por la razón de que Spring AOP es básicamente un proxy creado a partir del contenedor, por lo que puede usar AOP solo para beans de primavera. Mientras que con AspectJ puedes usar el aspecto en todos tus frijoles. Otro punto de comparación es la depuración y la previsibilidad del comportamiento del código. Con AOP de primavera, el trabajo se realiza desde el compilador de Java y los aspectos son una forma muy buena para crear un proxy para su Spring Bean. En AspectJ, si modificas el código, necesitas más compilación y entender dónde se tejen tus aspectos podría ser difícil. Incluso cerrar el tejido en primavera es más sencillo: con el muelle, se elimina el aspecto de la configuración, se reinicia y funciona. ¡En AspectJ debes recompilar el código!
En tejido de tiempo de carga, AspectJ es más flexible que Spring porque Spring no admite todas las opciones de AspectJ. Pero en mi opinión, si desea cambiar el proceso de creación de un bean, una mejor manera es administrar el inicio de sesión personalizado en una fábrica y no con el tejido en tiempo de carga de un aspecto que cambie el comportamiento de su nuevo operador.
espero que esta panorámica de AspectJ y primavera AOP ayuda a entender la diferencia de las dos pociones
Cuando existe alguna anotación en Spring pero también existe en Java, ¿qué debería usar? Java. La misma lógica se aplica a esta funcionalidad. La primavera es primavera. hoy aquí, mañana ya no. (Recuerde que las personas usaron Struts un tiempo antes de la primavera). AspectJ es la solución preferida a largo plazo. Durará más que la primavera. No descarto Spring, solo digo, por este aspecto ...: -; – inor