La primavera es un resumen exhaustivo de las preguntas de la entrevista

1. ¿Cuál es la primavera?

La primavera es un código abierto marco de desarrollo de Java EE. Las funciones básicas de Spring Framework se pueden aplicar en cualquier aplicación Java, pero hay una mejor escalabilidad de las aplicaciones web en la plataforma Java EE. El objetivo de Resorte del marco es hacer que el desarrollo de aplicaciones Java EE más simples, utilizando el modelo de programación basado en POJO para promover el buen estilo de programación.

2, Primavera ¿Cuáles son las ventajas?

Ligera: Primavera en términos de tamaño y transparencia absoluta pertenecen ligera versión básica del marco de la primavera sólo alrededor de 2 MB.

Inversión de Control (COI): Spring usando inversión de la tecnología de control para lograr la articulación flexible. La dependencia se inyecta en un objeto, en lugar de crear o en busca de objetos dependientes.

Programación Orientada a Aspectos (AOP): orientada a aspectos soporte de programación de primavera, mientras que la lógica de negocio de las aplicaciones y servicios de sistema separado.

Contenedor: Primavera contener y gestionar la configuración del objeto de aplicación y ciclo de vida.

framework MVC: framework web de Primavera es un framework MVC web bien diseñado, para reemplazar algunas de las buenas framework de desarrollo web.

gestión de transacciones: primavera junto a una empresa local para un negocio global (JAT) proporciona una interfaz unificada de gestión de transacciones.

Control de excepciones: El resorte proporciona una técnica particular conveniente API anormalidad (lanzado por JDBC, Hibernate o JDO) en uniforme, excepción no comprobada.

3, la implementación de transacciones de Primavera

gestión de transacciones programática: esto significa que usted puede traer una gran cantidad de flexibilidad gestionar mediante programación asuntos de esta manera, pero es difícil de mantener.
gestión de transacciones declarativa: Este enfoque significa que se puede separar la gestión de transacciones y código de negocio. Sólo es necesario anotaciones o los asuntos de gestión de configuración XML.
4, gestión de transacciones Resorte del marco ¿Cuáles son las ventajas

Se proporciona un modelo de programación unificado a través de diferentes API transacción (tal como JTA, JDBC, Hibernate, JPA y JDO).
Proporciona una API simple en lugar de una serie de transacciones API complejo (por ejemplo JTA). Es una administración de transacciones programática
de que los soportes de gestión de transacciones declarativa.
Puede estar bien integrados y diversos datos de primavera acceder a las tecnologías.
5, reglas de propagación transacción de resorte definido por el

PROPAGATION_REQUIRED: el apoyo a la transacción actual, si no hay ninguna transacción, creamos un nuevo negocio. Esta es la opción más común.
PROPAGATION_SUPPORTS: el apoyo a la transacción actual, si no hay ninguna transacción se ejecuta de una manera no transaccional.
PROPAGATION_MANDATORY: el apoyo a la transacción actual, si no hay ninguna transacción, una excepción.
PROPAGATION_REQUIRES_NEW: Nueva transacción, si existe la transacción actual, la transacción actual en espera.
PROPAGATION_NOT_SUPPORTED: realizar una operación de una manera no transaccional, si existe la transacción actual, puso la transacción actual en espera.
PROPAGATION_NEVER: para llevar a cabo de forma no transaccional, si existe la transacción actual, se produce una excepción.
PROPAGATION_NESTED: Si existe la transacción actual, se ejecuta dentro de las transacciones anidadas. Si no hay ninguna transacción se lleva a cabo con PROPAGATION_REQUIRED operaciones similares.
6, Primavera subyacente Asuntos principio

unidad de procesamiento División --IoC
desde la primavera de resolver el problema se localiza en el procesamiento de transacciones de base de datos única, la primera unidad de procesamiento de transacciones aplicación específica se divide en la primavera COI. Varias configuraciones de la transacción y se puso contenedor COI (siempre que el gestor de transacciones, el conjunto de transacciones y las características de propagación de mecanismo de aislamiento).

interceptores AOP necesitan clase de transacción
módulo de transacción de primavera se implementa mediante AOP proceso de declaración de función de transacción, la operación específica (tal como la configuración y ejecución de transacción de lectura, el objeto de transacción abstracto), con el uso de función de interfaz de AOP TransactionProxyFactoryBean, generar un proxy objeto proxy, el proxy por TransactionInterceptor método completo intercepción, el método de tricotar de la función de procesamiento de transacciones de la interceptación. configuración del contenedor Ioc leer atributos de transacción, estructuras de datos, la conversión interna (El TransactionAttributeSourceAdvisor utiliza) se requiere para el resorte de transacción, la conversión TransactionAttribute representación de objeto de datos.

Para implementar el procesamiento de transacciones (generación, COMMIT, rollback, suspender)
la primavera confiada al procesador de transacción específica. Implementar un resumen y adaptación. procesador de transacciones específicas adaptadas: soportes DataSource datos de origen, datos de origen de apoyo transacción de hibernación, los datos de origen de apoyo transacción JDO, datos de origen soporte de transacciones JPA, JTA. Éstos son apoyados por diseño PlatformTransactionManager, apoyar AbstractPlatforTransaction una serie de transacciones. TransactionManager ofrece una gama de soporte de fuente de datos de uso más frecuente.

Combinada
PlatformTransactionManager dio cuenta de interfaz TransactionInterception deja que combina con TransactionProxyFactoryBean, formar un diseño de sistema de Primavera transacción declarativa.

7, Spring MVC procesos que se ejecutan

El primer paso: los iniciados controlador una solicitud para el extremo delantero (el DispatcherServlet)

Paso dos: el controlador frontal de búsqueda solicitud HandlerMapping Handler (se puede configurar de acuerdo a XML, para encontrar comentarios)

El tercer paso: un asignador de procesador HandlerMapping Handler, el controlador vuelve al extremo distal

Paso cuatro: el controlador frontal llama al procesador adaptador para realizar Handler

Paso cinco: adaptador de procesador para llevar a cabo Handler

Sexto paso: la ejecución del gestor está completo retorno a la ModelAndView adaptador

Séptima etapa: un adaptador de procesador, el controlador vuelve a la ModelAndView distal (ModelAndView SpringMVC objeto subyacente es un marco, y que comprende una vista de modelo)

Octava etapa: una vista de extremo frontal de las solicitudes de controlador para el analizador analiza una vista (una vista resuelto en bienes (JSP el nombre de vista lógico))

Paso 9: Vista de resolución, el controlador vuelve al extremo distal

Paso 10: un controlador de vista de extremo frontal de representación (modelo de datos vista de representación (objeto ModelAndView) lleno en el campo de solicitud)

Décimo paso: el resultado respuesta al controlador front-end user

8, y BeanFactory Application Context ¿Cuál es la diferencia?

Application Context proporciona una solución a la información del documento, una manera de cargar archivos de recursos (por ejemplo, imágenes), que pueden enviar mensajes de controlar sus granos. Además, el contenedor o la operación de los granos, estas operaciones deben ser mediante programación planta de procesamiento de frijol puede ser tratado en una forma que se indica en el contexto de aplicación. Implementa el contexto de aplicación MessageSource, la interfaz se utiliza para obtener información local, la ejecución real es opcional.

Similitudes: Ambos son haba cargado a través de fichero de configuración xml, en comparación ApplicationContext y BeanFacotry, proporciona más extensiones.

Diferentes puntos: BeanFactory es la carga diferida, si una propiedad particular no se inyecta Bean, después de la carga BeanFacotry hasta que la primera llamada a utilizar el método getBean va a lanzar una excepción, mientras que el Application Context en la propia prueba de inicialización, es un cheque bien depende si se inyecta la propiedad; por lo general, elegimos utilizar Application Context.

9. ¿Qué es los frijoles de la primavera?

Frijoles de primavera son objetos Java que conforman el núcleo de la aplicación de primavera. Estos objetos instanciados por el contenedor del resorte COI, montaje, gestión. Estos objetos son creados por la configuración del contenedor de metadatos, por ejemplo, crear un archivo XML definido.

habas se crean en los granos de primavera en casos individuales. En la etiqueta Bean tiene un atributo de "singleton", si se establece en verdadero, el grano es una única forma de realización, si se establece en falso, el grano de prototipo bean. Singleton propiedad por defecto es true. De este modo, por defecto marco de primavera a todo grano de frijol Singleton.

10, charla sobre el apoyo de los alcances de frijol de primavera

Spring Framework soporta los siguientes cinco ámbitos diferentes:

singleton: Spring COI sólo hay un contenedor ejemplo Bean, a modo de una sola instancia de existe Bean.
Prototipo: un grano puede definir múltiples instancias.
solicitud: cada solicitud HTTP creará un nuevo Bean. El ámbito de aplicación sólo para el medio ambiente WebApplicationContext.
sesiones: una definición de una sesión HTTP Bean. El ámbito de aplicación sólo para el medio ambiente WebApplicationContext.
globalSession: la definición de un Bean con una sesión HTTP global. El alcance también se aplicará sólo para el medio ambiente WebApplicationContext.
El atributo scope frijol por defecto es "Singleton".

11, el principio de aplicación de Primavera Singleton

El Spring Framework es apoyado por medio de un solo ejemplo de un registro único modo de realización se pusieron en práctica, el registro se almacena en caché objeto HashMap, si la información de configuración en el archivo de configuración no requiere el uso de una única realización, utilizará la nueva forma de muelle de retorno de ejemplo instancia de objeto.

12, framework Spring para explicar el ciclo de vida de frijol

ApplicationContext contenedor, el flujo del ciclo de vida de la haba se muestra arriba, el proceso es el siguiente:

1. En primer lugar los contenedores se inicia, el alcance se instancia y carga diferida no singleton de la haba,

2. haba de información de definición de acuerdo con la información de configuración, todas las propiedades de inyección,

3. Si el bean implementa la interfaz BeanNameAware, la setBeanName de devolución de llamada () de esta interfaz, pasando el id Bean, en cuyo caso el Bean para obtener su ID en el archivo de configuración,

4. Si el implementos de haba interfaz BeanFactoryAware, la devolución de llamada setBeanFactory el método de interfaz (), pasando el Bean BeanFactory, por lo que Bean ganó el BeanFactory donde su,

5. Si el bean implementa la interfaz ApplicationContextAware, la setApplicationContext de devolución de llamada () de esta interfaz, pasando el Bean de Application Context, por lo que se obtiene del grano de Application Context donde su,

6. Si bean implementa interfaz BeanPostProcessor, el método de la interfaz se postProcessBeforeInitialzation de devolución de llamada (),

7. implementos Si InitializingBean haba de la interfaz, el método de la interfaz se afterPropertiesSet de devolución de llamada (),

8. Si los métodos init-método configurados Bean, el método va a realizar la init-método de configuración,

9. Si hay bean implementa interfaz BeanPostProcessor, el método de la interfaz se postProcessAfterInitialization de devolución de llamada (),

9 10. Después del proceso, se puede utilizar oficialmente el Bean, y para el alcance de un conjunto unitario Bean, primavera contenedor COI en copia en caché de la instancia del bean, y por el alcance para el prototipo de Bean, será llamado cada vez que nueva un nuevo objeto, del ciclo de vida en la gestión de llamadas, y ya no es gestionar el contenedor de primavera

11. Después de que el recipiente está cerrado, si DisposableBean haba implementa la interfaz, el destroy () método de devolución de llamada de la interfaz,

12. Si la haba configurado destruir-método método enfoque de configuración destruir-método llevará a cabo, por lo tanto, todo el ciclo de vida de la final de la haba

13, la forma de recursos que es encontrar, cargada?

Interfaz de Recursos de la primavera es una política de acceso a los recursos abstracta, que en sí misma no proporciona acceso a todos los recursos para lograr el acceso recurso específico realizado por la clase que implementa esta interfaz - Cada clase de implementación representa una políticas de acceso a los recursos. Resorte proporciona la siguiente clase de implementación de la interfaz de recursos es:

UrlResource: aplicación de acceso de calidad a los recursos de red.
ClassPathResource: ruta de acceso en los recursos de clase aplicación cargador de clases.
FileSystemResource: el acceso a los recursos de clase de implementación del sistema de archivos.
ServletContextResource: el acceso con respecto a la trayectoria ServletContext clase de implementación donde los recursos:
InputStreamResource: clases de implementación de recursos para acceder a un flujo de entrada.
ByteArrayResource: clases de implementación para acceder a una gran variedad de recursos bytes. Las clases de implementación de recursos para diferentes recursos subyacentes para proporcionar la lógica de acceso a los recursos apropiados, y proporcionar envases prácticos, con el fin de facilitar el acceso a los recursos del programa cliente.
14, explica los distintos modos de montaje automático?

Automática proporciona montaje para cinco modos diferentes recipiente resorte dependiente para la inyección automática de granos de montaje entre:

NO: El modo por defecto no es automática de montaje, el montaje se realiza fijando manualmente atributo ref frijol.

Byname: nombres de los parámetros de montaje automático, primavera granos recipiente búsqueda de atributos, que está dispuesto para frijoles Byname en el archivo de configuración XML. Después de tratar de igualar el contenedor, y el conjunto de la propiedad de bean con el mismo nombre de frijol.

byType: montaje automático por el parámetro de tipo de datos automática, Spring habas recipiente atributo de búsqueda, que está dispuesto para frijoles byType en el archivo de configuración XML. Después de varios intentos para que coincida con el conjunto de recipiente y el tipo y propiedades de la misma bean bean. Si más de un grano de calificar, entonces generará un error.

constructor: La misma byType es similar, pero se aplica a argumentos de constructor. Si no es exactamente un frijol de los mismos parámetros de tipo constructor de la BeanFactory, que arroja un grave error.

autodetect: Si hay un constructor predeterminado, construcción a modo de montaje automático, de lo contrario la forma automática de montaje byType.

15. ¿Qué es la inyección de dependencia en la primavera?

Dependencia inyección como una inversión de nivel de control (COI), no puede haber una variedad de maneras explicó. En este concepto, no es necesario crear un objeto sólo describe cómo crearlos. Usted no tiene que ser conectados directamente entre sí a través de componentes y servicios de código, sino por la descripción del archivo de configuración que necesita componentes de cualquier servicio. Después de que el contenedor COI es responsable de la convergencia.

16. ¿Cuáles son los diferentes tipos de COI (inyección de dependencias)?

inyección de dependencia Constructor: inyección de dependencia constructor se completa cuando el constructor gatillo contenedor, esta configuración tiene un número de parámetros, cada uno representando una inyección objeto.

método de inyección Setter se basa en: un primer recipiente que desencadena ningún método de fábrica estática constructor argumento o sin argumentos para instanciar un objeto, a continuación, llamar a los métodos setter recipiente de granos se completa método Setter basa inyección.

17, la inyección de dependencias recomiendas qué? método de inyección de dependencias del organismo constructor o la inyección de dependencias?

Se pueden utilizar los dos métodos simultáneamente la inyección de dependencias, la mejor opción es implementada utilizando la fuerza de inyección de dependencias constructor usando métodos setter implementadas dependencias opcionales.

18, Primavera COI cómo

Primavera org.springframework.beans paquete y el paquete formaron la base org.springframework.context marco de primavera contenedor COI.

interfaz BeanFactory proporciona un mecanismo de configuración avanzada de modo que cualquier tipo de objeto de configuración se hace posible. ApplicationContex interfaz BeanFactory (un sub-interfaz) se ha ampliado, se añadió una funcionalidad adicional sobre la base de BeanFactory, tales como la integración más fácil con Spring AOP, que también proporciona un mecanismo para el manejo de los recursos de mensajes (para la internacionalización), la propagación de eventos y la capa de aplicación especialmente configurado, como para las aplicaciones web WebApplicationContext.

recipiente org.springframework.beans.factory.BeanFactory primavera IoC se materializa, por una variedad de envases y haba gestión frente mencionado. interfaz BeanFactory es una interfaz de núcleo recipiente resorte COI.

19, contenedor IoC primavera es un qué?

Primavera COI es responsable de crear un objeto, la gestión de objetos (a través de la inyección de dependencia), los objetos de integración, objetos de configuración, y gestionar el ciclo de vida de estos objetos.

20, la COI ¿Cuáles son las ventajas?

COI inyección de dependencia o reduce la cantidad de código de la aplicación. Esto hace que la aplicación de la prueba es muy simple, ya que requiere una sola realización o mecanismo JNDI lookup ya no está en el ensayo de células. implementación simple y menos mecanismo de interferencia de tal manera que se consigue el acoplamiento débil. COI contenedor únicos suelo de soporte y servicio retardo en la carga.

21, explicado módulo AOP

módulo de AOP que tiene una porción de corte utilizado para desarrollar aplicaciones propiedades de resorte. La mayor parte de los servicios proporcionados por el módulo de AOP Aliance, lo que garantiza la interoperabilidad entre el Spring Framework y otros marcos de AOP. Además, el módulo de metadatos programado en la primavera.

22, primavera de programación orientada a aspectos (AOP)

Programación Orientada a Aspectos (AOP): permite al programador lógica modular horizontal de negocios, o la definición funcional de la parte de núcleo, por ejemplo, la gestión de registro y gestión de transacciones.

Sección (Aspecto): núcleo AOP es de corte, actúa clases más generales envasados ​​como módulos reutilizables. La API proporciona un conjunto de módulos que comprenden una función transversal. Por ejemplo, los registros de módulo de registro se refiere aspectos AOP. Dependiendo de los requisitos, una aplicación puede tener varias facetas. En la primavera de AOP, corte consigue mediante la clase comentada con @Aspect.

Notificación (Consejo): notificación indica que la acción antes y después de que el método de ejecución a ser ejecutado. De hecho, es cierto código framework Spring AOP disparado durante la ejecución del programa. sección de resorte puede llevar a cabo sobre cinco tipos de notificación:

antes (pre-notificación): Consejo para ser ejecutado antes de que un método.
después (aviso final): Cuando una notificación cuando un ensamblar salidas puntuales ejecutadas (ya sean normales o de retorno excepcional).
Abierto por volver (después de consejos): Notificación a cabo después de la finalización normal de un punto de conexión.
post-lanzamiento (aviso de anomalía): Consejo que se ejecuta cuando se produce una excepción método de salida.
alrededor (alrededor consejos): la notificación antes y después de la llamada al método disparado.
Punto de entrada (punto de corte): o un grupo de puntos de entrada es un punto de conexión, la notificación se lleva a cabo en estos lugares. Pointcut o expresiones pueden indicar a modo de juego.

Introducción: introducción nos permite añadir un nuevo método o propiedad en la clase existente.

Público: objeto es notificado por uno o más facetas. Por lo general, es un objeto proxy. También se conoce como objetos de notificación (aconsejado).

Agente: Agente se crea después de que el objeto de notificación al objeto de destino. Desde la perspectiva del cliente, agentes y objetos de destino son los mismos. Hay varios agentes:

BeanNameAutoProxyCreator: frijol nombre autoproxy creador
El DefaultAdvisorAutoProxyCreator: notificación predeterminado por el creador autoproxy
metadatos autoproxying: automática de metadatos Agente de
tejer: sección de conexión y otros tipos de aplicaciones u objetos juntos para crear un objeto de notificación proceso. Weaving se puede hacer en tiempo de compilación, carga o tiempo de ejecución.

23, el principio de aplicación de primavera AOP

Implementar la tecnología AOP, divididos en dos categorías:

Una tecnología de agente dinámico, el uso de la forma de realización interceptado mensaje, el mensaje decorado, en lugar de realizar el comportamiento objeto original;
Segunda forma de tejer estática, la introducción de una sintaxis específica para crear "aspecto", de modo que el compilador puede ser tejidas en el código relacionados con "aspecto" durante la compilación.
El principio es muy simple AOP primavera: marco AOP AOP es responsable de clase de proxy generada dinámicamente, por el método del objeto de métodos de clase y de devolución de llamada de destino ¡proxy está compuesta, y el objeto se puede utilizar como el objeto de destino. AOP de proxy contiene todos los métodos del objeto de destino, pero hay diferencias en los métodos del objeto de destino en el proxy AOP, método AOP añade procesamiento mejorado punto de entrada específico, y un método de devolución de llamada del objeto de destino.

Primavera AOP utilizando dinámicas mejoras en la tecnología de proxy en tiempo de ejecución tejen en el código. Utiliza el mecanismo de dos proxy: basado en proxies dinámicos JDK (en sí misma JDK proporciona interfaces solamente de proxy) y basado en el proxy dinámico CGLIB.

(1) JDK dinámica de proxy
JDK proxy dinámico se refiere java.lang.reflect paquete de dos clases: Proxy y InvocationHandler. En donde InvocationHandler sólo una interfaz, el código es llamado por el reflejo clase de objetivo mediante la implementación de la lógica de definición de interfaz transversalmente, y la dinámica transversales lógica y la lógica de negocio tejida juntos. El uso Proxy InvocationHandler crear dinámicamente una instancia de una línea con una interfaz para generar clase objetivo objeto proxy.
Su objeto proxy debe implementar una interfaz, que es el objetivo para completar el objeto proxy mediante la creación de una clase que implementa la interfaz durante el funcionamiento sólo pueden generar clase de proxy que implementa la interfaz, no para la clase
(2) CGLIB
usando CGLIB bytecode tecnología subyacente, creado como una subclase de la clase, y las técnicas de llamada a un método de interceptación para interceptar todo método de la clase padre en la subclase, y la lógica de tejido transversal homeopático generado durante el funcionamiento del objeto proxy que es la clase de objetivo la subclase extendida, por lo que no puede ser notificado métodos finales, privado, porque no se puede anular. contra implementa la clase del agente, principalmente para generar una subclase de la clase especificada, que abarca el método.
utilizar JDK predeterminado dinámico en la caja de resorte actuando lograr AOP, si la diana de clase proxy está configurado en el uso verdadero o de estrategias de optimización que se utilizarán para crear un proxy dinámico AOP CGLIB .spring básicamente el mismo que en la realización de estos dos métodos. En agente JDK, por ejemplo, se utiliza para crear un JdkDynamicAopProxy proxy en invoke () método primero requiere teje en la clase actual de refuerzo al bloque del paquete de cadena y, a continuación, llamar a la tejeduría interceptor es recursivo. Los proxies de retorno finales.

Publicado 33 artículos originales · ganado elogios 0 · Vistas 851

Supongo que te gusta

Origin blog.csdn.net/ninth_spring/article/details/104486176
Recomendado
Clasificación