Soy nuevo en Spring Framework. Por favor, guíame sobre la comprensión básica de Spring. Conozco Java y JSF, pero no sé nada sobre Struts u otros frameworks. He buscado en Internet y he podido descargar un PDF, pero no entiendo el flujo de primavera como entiendo el flujo de JSF. Proporcione enlaces para una forma simple de entender el flujo de Spring.Descripción de Spring Framework básico y flujo total
Respuesta
Soy nuevo en Spring Framework también. Hasta ahora, el documento siguiente es el más básico. Lo estoy leyendo también, espero que pueda ayudarte.
Soy nuevo en primavera y hace demasiado tiempo tuvo pregunta similar. Antes que nada quiero recomendarte el libro 'Spring in Action' de Craig Walls, me pareció muy útil y fácil de entender, también http://www.tutorialspoint.com/spring/ me ayudó a descifrar muchas cosas. Si entendí bien tu pregunta, podemos dividir el "flujo de primavera" en los ciclos de vida del Spring IoC container y Spring Bean. Aquí hay una vista general muy pequeña con un resumen del ciclo de vida de Spring Bean. Un bean pasa por varios pasos entre la creación y la destrucción en el contenedor Spring . Estos pasos son: propiedades
- Instantiate
- pueblan
- BeanNameAware`s setBeanName()
- BeanFactoryAware`s setBeanFactory
- ApplicationContextAware`s setApplicationContext()
- BeanPostProcessors Pre-inicialización
- InitializingBean`s afterPropertiesSet()
- Call-init método personalizado
- BeanPostProcessors post-inicialización
- DisponsableBean`s destruyen
- llamada destruir método
Cada paso proporciona propias oportunidades para la personalización personalizado. Aquí hay un código que sólo “trazas” bean`s vida:
Para frijol claseA:
public class ClassA implements InitializingBean, DisposableBean, BeanNameAware, BeanFactoryAware, ApplicationContextAware{
private String messageA;
public ClassA() {
System.out.println("ClassA: default constructor called.");
}
public void customInitMethod(){
System.out.println("ClassA: customInitMethod() method called.");
}
public void customDestroyMethod(){
System.out.println("ClassA: customDestroyMethod() method called.");
}
public String getMessageA() {
System.out.println("ClassA: message get method called.");
return messageA;
}
public void setMessageA(String message) {
System.out.println("ClassA: message set method called.");
this.messageA = message;
}
public void afterPropertiesSet() throws Exception {
System.out.println("ClassA: afterPropertiesSet() called because InitializingBean interface.");
}
public void destroy() throws Exception {
System.out.println("ClassA: destroy() called because DisposableBean interface.");
}
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
System.out.println("ClassA: application context set: " + arg0.getApplicationName());
}
public void setBeanFactory(BeanFactory arg0) throws BeansException {
System.out.println("ClassA: beanFacrory set.");
}
public void setBeanName(String arg0) {
System.out.println("ClassA: bean name set: " + arg0);
}
}public class ClassA implements InitializingBean, DisposableBean, BeanNameAware, BeanFactoryAware, ApplicationContextAware{
private String messageA;
public ClassA() {
System.out.println("ClassA: default constructor called.");
}
public void customInitMethod(){
System.out.println("ClassA: customInitMethod() method called.");
}
public void customDestroyMethod(){
System.out.println("ClassA: customDestroyMethod() method called.");
}
public String getMessageA() {
System.out.println("ClassA: message get method called.");
return messageA;
}
public void setMessageA(String message) {
System.out.println("ClassA: message set method called.");
this.messageA = message;
}
public void afterPropertiesSet() throws Exception {
System.out.println("ClassA: afterPropertiesSet() called because InitializingBean interface.");
}
public void destroy() throws Exception {
System.out.println("ClassA: destroy() called because DisposableBean interface.");
}
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
System.out.println("ClassA: application context set: " + arg0.getApplicationName());
}
public void setBeanFactory(BeanFactory arg0) throws BeansException {
System.out.println("ClassA: beanFacrory set.");
}
public void setBeanName(String arg0) {
System.out.println("ClassA: bean name set: " + arg0);
}
}
Para CustomPostProcessor:
public class CustomPostProcessor implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
System.out.println("CustomPostProcessor: beforeInitialization on: "
+ beanName);
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
System.out.println("CustomPostProcessor: afterInitialization on: "
+ beanName);
return bean;
}
}
En la clase principal por la que la creación de Application Context, frijol conseguir e impresión mensaje:
public static void main(String[] args) {
AbstractApplicationContext context = new ClassPathXmlApplicationContext(
"META_INF/spring/app-context.xml");
ClassA objA = (ClassA) context.getBean("classA");
System.out.println(objA.getMessageA());
context.registerShutdownHook();
}
en APP-context.xml tenemos:
<bean id="classA" class="ClassA" init-method="customInitMethod"
destroy-method="customDestroyMethod">
<property name="messageA" value="messagA: Hello Spring!" />
</bean>
<bean class="CustomPostProcessor" />
Según entiendo líneas de salida corresponden a las etapas del ciclo de vida de esta manera:
- 1.Instantiate
claseA: constructor por defecto llamada.
- 2.Populate propiedades
ClassA: método mensaje de establecimiento de llamada.
- 3.BeanNameAware`s setBeanName()
ClassA: nombre del bean conjunto: classA
- 4.BeanFactoryAware`s setBeanFactory
ClassA: Conjunto beanFacrory.
- 5.ApplicationContextAware`s setApplicationContext()
ClassA: contexto de aplicación establece:
- BeanPostProcessors 6.Pre-inicialización
CustomPostProcessor: beforeInitialization en: classA
- 7.InitializingBean`s afterPropertiesSet()
ClassA: afterPropertiesSet() llamada porque interfaz InitializingBean.
- 8.Call encargo init-método
claseA: Método customInitMethod() llama.
- BeanPostProcessors 9.Post-inicialización
CustomPostProcessor: afterInitialization en: classA
Programa- imprime mensaje
claseA: método get mensaje de llamada. messagA: ¡Hola primavera!
- 10.DisponsableBean`s destruir
claseA: destroy() llamada porque la interfaz DisposableBean.
- 11.Call costumbre destruir método
claseA: Método customDestroyMethod() llama.
- Transición 1 - El usuario envía la solicitud al servidor mediante la presentación de la forma/por clic petición de hipervínculo etc se da inicialmente a web.xml.
- Transición 2: solicitudes de rutas WEB.XML a DispatcherServlet mirando en la etiqueta.
- Transition 3 - Inside DispatcherServlet, Primero 'HandlerMapping' entregó la solicitud al 'Controlador' adecuado.
- Transición 4 - solicitud de mapas del controlador a la clase de modelo adecuada. Todo BUSINESS LOGIC se realiza dentro de la clase Model.
- Transición 5 - Si se necesita la operación de la base de datos , la clase de modelo encaminará la solicitud al DAO adecuado. Todas las operaciones de la base de datos deben llevarse a cabo en DAO.
- Transición6 - Si es necesario, adjunte atributos en el alcance solicitud/sesión/aplicación y regrese a Modelo.
- Transición 7 - Si es necesario, adjunte los atributos en el alcance solicitud/sesión/aplicación y regrese a Controlador.
- Transición 8 - El controlador simplemente lo devuelve a cualquier Vista (JSP/HTML, etc.).
- Transition 9 - JSP/Html se visualiza de nuevo al usuario.
- 1. Flujo básico de Struts
- 2. Flujo básico de páginas en Zend Framework PHP
- 3. Git flujo de trabajo básico
- 4. Uso básico de Spring LDAP
- 5. Spring Framework en términos simples
- 6. Control de flujo básico en JavaScript
- 7. Spring MVC marco cuestión Dispatcher muy básico
- 8. Eventos de Spring Framework
- 9. Descripción de las transacciones en Entity Framework
- 10. Spring Framework name background
- 11. PHP básico y AJAX
- 12. Actualizado Spring MVC Framework Tutorial
- 13. Quartz JobStore con Spring Framework
- 14. .NET Framework 4 tamaño total de implementación de la aplicación
- 15. Ventaja de usar Spring roo over play framework (si usamos Spring framework)?
- 16. Spring Framework Conexión de JVM entre sí
- 17. HTML Descripción Meta + y
- 18. Diferencia entre applicationContext.xml y primavera-servlet.xml en Spring Framework
- 19. Internals of Spring Framework y otros contenedores IoC
- 20. Descripción de NSObject y depuraciónDescripción
- 21. iCalendar y formato de descripción
- 22. spring-webmvc.jar no viene con Spring Framework 3.0.5 descarga
- 23. Spring Framework MVC Base Controller Método
- 24. Spring Framework filtro, haba no inyecta
- 25. Spring Framework, habilite el método PUT
- 26. Java: Spring Framework: Declarar anidadas Mapas
- 27. ¿Crear la tarea Spring Framework programmatically?
- 28. URL Descripción y miniatura API
- 29. UML: flujo de control y flujo de objetos
- 30. Descripción del flujo de trabajo para el uso de git para el desarrollo interno
Gracias De hecho, tengo que la documentación, empezando era bueno, pero pasando, hay una cierta lackness me sentí así que estoy pidiendo, puede ser si vamos a través de él 3 veces podemos entender que pienso De todos modos, gracias amigo. – user1407297
Hola, soy yo otra vez. Cuando estaba totalmente confundido por términos como IoC y AOP, encontré este sitio y es realmente básico y claro.http: //www.springbyexample.org – POPOL