Primavera
Lo que es primavera
La primavera es una ventanilla marco de desarrollo de código abierto de peso ligero. Se Ioc, (control de inversión) y el AOP (Aspect Oriented) como el núcleo, se lleva a cabo con el trabajo previo JavaBean básica sólo puede ser realizado por EJB, el EJB sustituido modelo de desarrollo hinchado, ineficiente.
Descripción de la Primavera: El resorte está soluciones de capa de aplicación JavaEE, proporcionando SpringMVC y el marco de integración Struts en la capa de presentación; en la capa de negocio puede manejar la transacción, el registro y así sucesivamente; la capa de persistencia puede ser integrado MyBatis, Hibernate, JdbcTemplate etc. tecnología, por lo que, la primavera es una empresa para desarrollar un buen marco para el desarrollo de "ventanilla única". La primavera a través de la capa de la capa de presentación, lógica de negocio y la persistencia
Primavera Marco ventaja
Primavera simple, imprecisa, y otras características se puede probar, no sólo el desarrollo para el desarrollo de servidor Spring, desarrollo java se puede aplicar a cualquier aplicación. Resume las ventajas de la primavera:
- el diseño no intrusivo
Primavera es un marco no invasivo que permite que el código de la aplicación para reducir al mínimo la dependencia de la trama
- desacoplamiento conveniente, el desarrollo simplificar
La primavera es una gran fábrica, puede crear todos los objetos y las dependencias de los trabajos de mantenimiento a la gestión de contenedores de primavera, lo que reduce el acoplamiento entre los componentes.
- apoyo AOP
Primavera proporciona soporte para AOP, que permitirá que algunas tareas comunes, tales como la seguridad, transacciones, registros y otro procesamiento centralizado, lo que aumenta la capacidad de reutilización del programa
- Soporte para el procesamiento de transacciones declarativa
Sólo necesita para completar la gestión de la configuración de los asuntos sin programación manual
- Fácil de prueba del programa
Primavera proporciona apoyo Junit4, se puede comentar fácilmente por el programa de ensayos de muelles
- Fácil integración de una variedad de excelente marco
Primavera no excluye una variedad de excelente marco de código abierto, su interior ofrece un apoyo directo para una variedad de excelente marco.
Arquitectura de primavera
Spring Framework utiliza una arquitectura de capas, una pluralidad de módulos funcionales 20
1, Core Container (contenedor núcleo)
contenedor de núcleo de muelles es la base del módulo establecido, el módulo que consiste de frijoles, módulo Core, los módulos de contexto, módulo de contexto-apoyo y un módulo SpEL
Frijoles módulo: Proporciona BeanFactory, se trata de una aplicación clásico patrón de la fábrica. Primavera gestionará objetos llamado frijol
Core El módulo de núcleo: proporciona un elemento básico de la estructura, incluyendo Ioc, (control inversión) y función DI (DI)
módulo de contexto Contexto: módulo construido sobre la base del núcleo y el frijol, que es el acceso al medio de cualquier definición del objeto y de configuración
módulo de contexto-soporte: proporciona soporte integrado para aplicaciones de bibliotecas de terceros incorporados primavera
2, la integración de datos / Acceso
módulo de JDBC: proporciona una capa de abstracción JDBC, reducir código
módulos ORM:
módulo de transacciones Transacción: apoyar la gestión de la interfaz especial y poner en práctica todas las clases de programación POJO y transacciones declarativas
3, WEB
módulo de servlet:
Entrar en la programación de primavera:
Primavera descarga y estructura de directorios
La primavera es la primera versión publicada en 2004,
Versión Spring4.3.6 Nombre: spring-framework-4.3.6.RELEASE-dist.zip
paquete Jar que contiene la fuente y
Tarro paquete utilizado para desarrollar el código fuente para la visualización de la fuente subyacente
docs carpeta contiene los estándares de documentación y desarrollo de la API de primavera
libs carpeta contiene el paquete frasco y las necesidades de desarrollo de código fuente,
esquema de archivo de esquema carpeta contiene las necesidades de desarrollo, que define las restricciones en el archivo de configuración en el archivo
Procedimientos de entrada:
- Importar paquete jar:
2, la introducción de perfiles
- código fuente de escritura (clase construida llave en mano)
- interfaces de código UserDAO de escritura:
UserDao interfaz pública {
por ejemplo public void ();
}
- Escribir código UserDaoImpl clase de implementación:
public class UserDaoImpl implementos UserDao {
@Anular
por ejemplo public void () {
// generada-Auto TODO Stub
System.out.println ( "Hola primavera ...");
}
}
- archivo de código de escritura de configuración;
<! - Instancia de la configuración de clase especificada a la primavera, primavera permiten que crear objetos ->
<Bean id = clase "UserDao" = "com.bdqn.cn.dao.UserDaoImpl" />
- Escribir código para la clase de prueba:
public class {testDemo
@Prueba
método public void () {
// una instancia del objeto llamando al método
// UserDao ud = new UserDaoImpl ();
// ud.say ();
1 // inicialización contenedor Spring, cargar el archivo de configuración
ApplicationContext aplicación = nuevo ClassPathXmlApplicationContext ( "applicationContext.xml");
// 2, adquirido a través de la instancia recipiente UserDAO
UserDao ud = (UserDao) app.getBean ( "UserDao");
// 3 pruebas, llamar a la forma
ud.say ();
}
}
Application Context resolución:
/ *
* ApplicationContext representan contexto de aplicación, contenedor Núcleo elástico que se utiliza comúnmente
* Es una interfaz
* Crear por ClassPathXmlApplicationContext
* búsquedas ClassPathXmlApplicationContext para el archivo de configuración XML especificado de la ruta de clases classPath, localizar y cargado Application Context
Ejemplos de operación *
* /
Inyección de dependencias:
inyección misma dependencia (inyección de dependencias, DI abreviado) y control inverso (Ioc,) significado
Inversión de Control: Después de usar el marco Spring, ya no es una instancia de objeto es creado por la persona que llama, pero creado por el contenedor Spring, la relación entre el recipiente de primavera será responsable de controlar el programa, no el código directamente controlada por el programa llamante de modo que el control se transfiere desde la aplicación al recipiente Spring, el control de la inversa que pasó, y esta es la inversión de control de la primavera
Desde la perspectiva de la primavera punto de vista recipiente, contenedor del resorte será responsable de objetos dependientes asignados a las variables miembro de la persona que llama, que es equivalente a inyectar una instancia del mismo depende de la persona que llama, esto es la inyección de dependencia de primavera
Dependiente de la implementación de la inyección:
- inyección método de propiedad setter
Construimos categorías:
UserService código de la interfaz de escritura:
UserService interfaz pública {
por ejemplo public void ();
}
Escribe userServiceImpl Código clase de implementación:
clase pública implementa UserServiceImpl UserService {
// Aquí es una declaración de ningún valor específico asignado a la misma por lo que es necesario
UserDAO UserDao privado;
// parámetro pasado a UserDAO
setUserDao pública vacío (UserDao UserDAO) {
this.userDao = UserDAO;
}
@Anular
por ejemplo public void () {
// generada-Auto TODO Stub
this.userDao.say ();
System.out.println ( "Hola UserService UserDAO ...");
}
}
Preparación de código de clase de prueba:
ApplicationContext aplicación = nuevo ClassPathXmlApplicationContext ( "applicationContext.xml");
UserService nosotros = (UserService) app.getBean ( "UserService");
us.say ();
2, el método de configuración de la inyección
El código escrito userServiceImpl
clase pública implementa UserServiceImpl UserService {
// Aquí es una declaración de ningún valor específico asignado a la misma por lo que es necesario
UserDAO UserDao privado;
// constructor de paso de parámetros
UserServiceImpl pública (UserDao UserDAO) {
súper();
this.userDao = UserDAO;
}
}
Escribir el código fichero de configuración:
<! - la inyección de constructor ->
<Bean id = "UserService" class = "com.bdqn.cn.service.UserServiceImpl">
<Índice constructor-arg = "0" ref = "UserDao" />
</ Bean>
clases de prueba de escritura:
@Prueba
metodo2 public void () {
ApplicationContext aplicación = nuevo ClassPathXmlApplicationContext ( "applicationContext.xml");
UserService nosotros = (UserService) app.getBean ( "UserService");
us.say ();
}