Programación Java, ¿qué principios se utilizan para implementar ioc y aop en primavera?
Inversión de Control (COI)
(La clave para entender bien el COI es aclarar "quién controla a quién, qué se controla, por qué es una inversión (si hay una inversión , debería haber una dirección hacia adelante)" ), ¿qué aspectos se han invertido?)
1. Ioc—Inversión de Control: Es decir, "inversión de control", que no es una tecnología, sino una idea de diseño. En el desarrollo de Java, Ioc significa entregar el objeto que diseñó al contenedor para su control, en lugar del control directo tradicional dentro de su objeto.
2. Quién controla quién y qué: en la programación tradicional de Java SE, creamos objetos directamente dentro del objeto a través de nuevos, y el programa crea activamente objetos dependientes, mientras que IoC tiene un contenedor dedicado para crear; Estos objetos están controlados por el contenedor Ioc.
¿Quién controla a quién? Por supuesto, el contenedor IoC controla el objeto.
¿Controlar qué? Esto es para controlar principalmente la adquisición de recursos externos (no solo objetos, incluidos archivos, etc.).
3. Por qué se invierte y qué aspectos se invierten: donde hay inversión, hay rotación hacia adelante. En las aplicaciones tradicionales, controlamos activamente el objeto para obtener directamente objetos dependientes, es decir, rotación hacia adelante. ; En inversión, el contenedor ayuda a crear e inyectar objetos dependientes.
¿Por qué la reversión? Debido a que el contenedor nos ayuda a encontrar e inyectar objetos dependientes, el objeto solo acepta pasivamente objetos dependientes, por lo que se invierte.
¿Qué aspectos se han revertido? La recuperación de objetos dependientes se invierte.
No pasa nada si todavía no lo entiendes. ¡Vamos a explicarte un caso sencillo! ! !
Ejemplo: cuando estemos en cualquier proyecto de programa con importancia para el desarrollo práctico, usaremos muchas clases para describir sus funciones únicas y completaremos negocios específicos a través de la cooperación mutua entre clases. En este momento, cada clase debe ser responsable de administrar las referencias y dependencias de las clases que interactúan con ella, y el código será extremadamente difícil de mantener y altamente acoplado. La aparición de IOC se utiliza para resolver este problema. Usamos IOC para entregar la creación y coordinación de estos objetos dependientes al contenedor Spring. Cada valor de objeto debe prestar atención a su propia relación de lógica de negocios. Desde esta perspectiva, la forma de obtener objetos dependientes se ha invertido y el contenedor Spring controla cómo el objeto obtiene recursos externos (incluidos otros objetos e información de archivos, etc.).
En general: IOC resuelve problemas de código mediante inyección de dependencias en archivos de configuración Xml.
¿Cuántos tipos de inyección de COI existen? Se puede dividir principalmente en tres tipos: inyección de constructor, inyección de propiedad e inyección de interfaz. Spring admite la inyección de constructores y la inyección de propiedades
Programación orientada a aspectos (AOP)
(La programación orientada a aspectos, AOP es en realidad solo un complemento de la programación orientada a objetos. AOP se implementa básicamente a través del proxy mecanismo. )
Llamamos al fragmento de código que corta un método específico de una clase específica como un aspecto, y qué clases y métodos se llaman puntos de entrada. Con AOP, podemos extraer el código único de varias clases en un segmento y luego cortarlo en el objeto cuando sea necesario, cambiando así su comportamiento original.
Todos sabemos que Java es programación orientada a objetos OOP. Tiene sus propias ventajas y desventajas. Por ejemplo: En nuestro desarrollo, habrá una línea de negocio principal (es decir, las necesidades del cliente). Lo que tenemos que hacer es darnos cuenta de las necesidades en esta línea principal.
Cuando implementamos estas funciones, a menudo tenemos que hacer algunas cosas adicionales inevitables, como gestión de transacciones, registro de registros, etc., que son muy complicadas y la cantidad de código aumenta, por lo que Spring proporciona otra perspectiva para pensar en la estructura del programa. Es decir, eliminemos estas cosas y agréguelas a nuestro código en el momento y lugar correctos. Por ejemplo, durante la gestión de transacciones declarativas, cuando detectemos que los métodos guardar* y actualizar* deben llamarse en la capa de servicio. Inicie la transacción primero. Este es AOP, la idea orientada a la programación.
Terminología AOP:
1. Consejo: Es la función que desea, que es la seguridad, cosas, registros, etc. mencionados anteriormente. Primero lo defines y luego lo usas donde quieras usarlo
2. JoinPoint: esto es más fácil de explicar, es donde Spring te permite usar notificaciones, y hay tantas Básicamente, el antes y después de cada método (ambos están bien), o cuando se lanza una excepción, puede ser un punto de conexión. Spring solo admite puntos de conexión de métodos. Otros, como aspectoJ, también le permiten inyectar el constructor o la propiedad en cualquier momento. , pero eso no es en lo que nos centramos. Solo recuerde que el antes y el después del método (lanzar excepciones) son todos puntos de conexión.
3. Pointcut: según los puntos de conexión mencionados anteriormente, defina el pointcut. Si hay 15 métodos en una de sus clases, entonces habrá docenas de puntos de conexión. use notificaciones cerca de todos los métodos (el uso se llama tejido, que se discutirá más adelante). Solo desea permitir que algunos de ellos hagan algo antes, después o cuando se produzca una excepción. Luego use puntos de corte para definir estos métodos. deje que los puntos de corte filtren los puntos de conexión y seleccione los métodos que desee.
4. Aspecto: El aspecto es una combinación de notificación y punto de entrada. Ahora ha descubierto que no hay un punto de conexión. El punto de conexión es solo para ayudarlo a comprender los puntos de corte. Simplemente comprenda este concepto. La notificación explica qué hacer y cuándo hacerlo (cuándo se puede saber antes, después, alrededor, etc. en el nombre del método), y el punto de entrada explica dónde hacerlo (especifique qué método), este es un completo definición de aspecto.
5. Introducción: Nos permite agregar nuevos atributos de método a clases existentes. ¿No se trata solo de usar aspectos (es decir, nuevos atributos de métodos: definiciones de notificación) en la clase objetivo?
6. Objetivo: la clase objetivo mencionada en la introducción, que debe ser notificada El objeto , Es decir, la lógica empresarial real, podemos entretejerla en aspectos sin saberlo. Y me centro en la lógica del negocio en sí.
7. Proxy: cómo implementar todo el mecanismo aop es a través de un proxy. Esto se explicará en detalle más adelante.
8. Tejido: El proceso de aplicar aspectos al objeto objetivo para crear un nuevo objeto proxy. Hay tres formas en que Spring usa el tiempo de ejecución.