Directorio de programación avanzada de Spring
Parte 1 Introducción a Spring
Capítulo 1 Introducción a Spring 2
1.1 ¿Qué es Spring 2?
1.1.1 Más allá de la dependencia Funciones de inyección 4
1.1.2 Uso de Spring para programación orientada a aspectos 4
1.1.3 Acceso a datos 5
1.1.4 Simplificación e integración de Java EE 5
1.1.5 Programación de tareas basada en Spring 6
1.1.6 Soporte de Spring para correo electrónico 6
1.1.7 Lenguaje dinámico 6
1.1.8 Acceso remoto 6
1.1.9 Gestión de transacciones 7
1.1.10 Spring MVC Framework 7
1.1.11 Spring Web Flow 7 p>
1.1.12 Tecnología AJAX 7
1.1.13 Internacionalización 8
1.1.14 Manejo de excepciones simplificado 8
1.2 Proyecto Spring 8
p>1.2.1 El origen de Spring 8
1.2.2 Spring .NET 8
1.2.3 Spring IDE 9
1.2.4 Spring Security System (anteriormente Acegi) 9
1.2.5 Alternativa de Spring 9
1.3 Código de muestra 10
1.4 Resumen 10
Capítulo 2 Primeros pasos con Spring 11
2.1 Obtenga Spring Framework 11
2.1.1 Consulte Spring 11 desde CVS
2.1.2 Compile Spring a partir del código fuente 12
2.1.3 Comprobar el paquete de lanzamiento de Spring 13
2.1.4 Paquete de lanzamiento de Spring 13
2.1.5 Paquetes dependientes de Spring 14
2.1.6 Aplicación de muestra 16
2.1.7 Configuración de Spring e IDE 18
2.2 Ejemplo de HelloWorld 20
2.3 Ejemplo de la versión Spring de "Hello, World" 23
2.3.1 Inyección de dependencia 24
2.3.2 La intrusión de Spring 26
2.4 Resumen 26
Capítulo 3 Inversión de control 27
3.1 Inversión de control e inyección de dependencia 27
3.2 Tipos de inversión de control 27
3.2.1 Búsqueda de dependencia contextual 29
3.2.2 Inyección de dependencia del método constructor 30
3.2.3 Configuración de la inyección de dependencia del método 31
3.2.4 Inyección de dependencia y búsqueda de dependencia 32
3.2.5 Configuración inyección de método e inyección de método constructor 33
3.3 Inversión de control en Spring 34
3.4 Inyección de dependencia basada en Spring 34
3.4.1 beans y BeanFactory 34
3.4.2 Implementación de BeanFactory 35
3.4.3 Definición de bean XML 36
3.4.4 Inyección de constructor 37
3.4.5 Inyección parámetros 40
3.4.6 Comprender los nombres de los beans 50
3.4.7 Modo de creación de instancias de beans 52
3.4.8 Dependencia del análisis 55
3.4.9 Ensamblaje automático de beans 57
3.4.10 Comprobación de dependencia 61
3.4.11 Herencia de beans 62
3.5 Resumen 64
Capítulo 4 Avanzado
66
4.1 El impacto de Spring en la portabilidad de las aplicaciones 67
4.2 Gestión del ciclo de vida de los beans 67
4.2.1 Creación de beans integrados 68
p>4.2.2 Destrucción de beans incrustados 74
4.3 Hacer que los beans sean conscientes de Spring 79
4.3.1 Usar la interfaz BeanNameAware 80
4.3 .2 Uso de la interfaz BeanFactoryAware 81
4.4 Uso de la inyección de método 83
4.4.1 Búsqueda de inyección de método 83
4.4.2 Reemplazo de método 88
4.5 Uso de la interfaz FactoryBean 91
4.5.1 Clase MessageDigestFactoryBean 91
4.5.2 Acceso directo a FactoryBean 94
4.6 Clase BeanFactoryPostProcessor 94
p>4.7 Modificador de propiedades JavaBean 101
4.7.1 PropertyEditor incorporado 101
4.7.2 Creación de un PropertyEditor personalizado 104
4.8 Clase BeanPostProcessor 108
4.8.1 Implementación de un BeanPostProcessor 110
4.8.2 Selección de máquina real usando la clase BeanPostProcessor 114
4.9 Spring ApplicationContext 115
4.9.1 Clase de implementación ApplicationContext 115
4.9.2 Uso de ApplicationContext-Aware 116
4.9.3 Inicialización del bean de control 117
4.9 .4 Uso basado en anotaciones configuración 118
4.9.5 Usando MessageSource para la internacionalización 123
4.9.6 Usando MessageSource en una aplicación independiente 130
4.9 7 Interfaz MessageSourceResolvable 130
4.9.8 Uso de eventos de aplicación 130
4.9.9 Consideraciones para el uso de eventos 132
4.9.10 Acceso a recursos 133
4.10 Resumen 134
Capítulo 5 Conceptos básicos de Spring AOP 135
5.1 Concepto de AOP 136
5.2 Tipos de AOP 136
5.2.1 AOP estático 137
5.2.2 AOP dinámico 137
5.2.3 Seleccionar un tipo de AOP 137
5.3 AOP en primavera 137
5.3.1 AOP Alliance 138
5.3.2 Hola mundo de AOP 138
5.3.3 Arquitectura Spring AOP 140
5.3 .4 Clase ProxyFactory 140
5.3.5 Creando notificaciones en Spring 141
5.4 Notificadores y puntos de entrada en Spring 155
5.4.1 Interfaz de puntos de entrada 156
5.4.2 Usando ComposablePointcut 172
5.4.3 Resumen de puntos de entrada 175
5.5 Explicación detallada de los agentes 176
5.5.1 Comprensión del Proxy 176
5.5. 2 Usando dinámica JDK
Proxy 176
5.5.3 Uso del proxy CGLIB 177
5.5.4 Comparación de rendimiento entre los dos 177
5.5.5 Elección de un proxy 180
5.6 Resumen 180
Capítulo 6 AOP avanzado 182
6.1 Anotaciones de @AspectJ 182
6.2 Explicación detallada de @AspectJ 186
6.2.1 Pointcut 186
6.2.2 Expresión Pointcut 189
6.2.3 Discutir la expresión Pointcut 191
6.2.4 En XML usando @Pointcuts 194
6.2.5 Tipos de notificaciones 194
6.2.6 Vinculación de parámetros 201
6.2.7 Introducción 202
6.2.8 Vida del aspecto ciclo 208
6.3 Servicio de marco AOP 209
6.3.1 Crear el primer aspecto usando el espacio de nombres AOP 209
6.3.2 Puntos de entrada en el espacio de nombres AOP 211 p>
6.3.3 Usar el espacio de nombres AOP para crear notificaciones 212
6.3.4 Introducción al espacio de nombres AOP 217
6.4 Selección de estilo 219
6.5 Usar Proxy Spring AOP 220
6.6 Integración de AspectJ 225
6.6.1 Creación del primer aspecto de AspectJ 225
6.6.2 Compilación de programas de muestra 227
6.6.3 Alcance de AspectJ 229
6.7 Tejido en tiempo de carga 230
6.7.1 El primer ejemplo de tejido en tiempo de carga 230
6.7.2 LoadTimeWeaver estrategia de búsqueda 232
6.8 Práctica de AOP 232
6.9 Resumen 235
Capítulo 7 Esquema y espacio de nombres Spring 236
7.1 El motivo de la nueva configuración 236
7.2 El esquema incluido en Spring 2.5 238
7.2.1 esquema de beans 238
7.2.2 Esquema de contexto 239
7.2.3 esquema util 239
7.2.4 esquema tx 242
7.2.5 esquema aop 242
7.2.6 esquema jee 242
7.2.7 esquema de idioma 243
7.3 Detrás del esquema 244
7.4 Esquema de personalización 246
7.5 Configuración IDE 249
7.6 Resumen 252
Capítulo 8 Modo Spring 253
8.1 Estructura de directorios 253
8.1.1 Aplicación simple 253
8.1.2 Compleja Aplicación 255
8.1.3 Empaquetado y denominación 255
8.2 Introducción a los patrones de diseño 255
8.2.1 Programación orientada a interfaz 256
8.2.2 Patrón de creación 256
8.2.3 Patrón estructural 260
8.2.4 Patrón de comportamiento 262
8.3 Patrón de aplicación de resorte 264
8.3.1 Diseño en capas 265
8.3.2 Paginación de alto rendimiento 266
8.3 .3 Informe de errores múltiples 268
8.3.4 Transacciones de interfaz de usuario 271
8.3.5 Proceso en segundo plano 274
8.3.6 Notificación por correo electrónico
278
8.3.7 Recopilación y registro de errores 280
8.4 Resumen 283
Parte 2 Acceso a datos
Capítulo 9 Compatibilidad con Spring JDBC 286
9.1 Los conceptos principales de JDBC 286
9.1.1 Usando DriverManager y Connection 288
9.1.2 Usando PreparedStatement 289
9.1 .3 Uso de la clase CallableStatement 292
9.1.4 Otros conceptos de JDBC 293
9.2 Conceptos de Spring sobre soporte de acceso a datos 293
9.3 Soporte de Spring para acceso a datos JDBC soporte 294
9.4 Usando la clase JdbcTemplate 294
9.4.1 El método de ejecución de la clase JdbcTemplate 296
9.4.2 El método de consulta de la clase JdbcTemplate y la Extensión de métodos 299
9.4.3 Método de actualización 303 de la clase JdbcTemplat
9.4.4 Método BatchUpdate 304 de la clase JdbcTemplate
9.5 Subclase RdbmsOperation 305
p>
9.5.1 Subclase SqlUpdate 306
9.5.2 Subclase BatchSqlUpdate 311
9.5.3 Clase SqlCall y subclase StoredProcedure 312
9.5.4 Clase SqlQuery y sus subclases 314
9.5.5 Comparación de la clase JdbcTemplate y la clase RdbmsOperation 321
9.6 Objetos binarios grandes 321
9.7 JdbcDaoSupport Clase 324
9.8 Simple Spring JDBC 326
9.8.1 SimpleJdbcTemplate clase 326
9.8.2 SimpleJdbcCall clase 329
9.8. 3 Clase SimpleJdbcInsert 331
9.8.4 Clase SimpleJdbcDaoSupport 332
9.9 Resumen 333
Capítulo 10 Integración de iBATIS 334
10.1 Descripción simplificada de iBATIS 334
10.1.1 iBATIS versión 334
10.1.2 Infraestructura y configuración 335
10.2 Archivos de mapeo 335
10.2. archivo 337
10.2.2 Configuración de iBATIS y Spring 339
10.3 Consulta de datos 341
10.3.1 Operación de consulta simple 341
10.3 .2 Operación de consulta uno a uno 344
10.3.3 Operación de consulta uno a muchos 348
10.3.4 Operación de consulta muchos a muchos 350
10.4 Actualizar datos 350
10.5 Eliminar datos 353
10.6 Insertar datos 354
10.7 Funciones que faltan en iBATIS 356
10.8 Rendimiento general 357
10.9 Resumen 358
Capítulo 11 Soporte de Spring para Hibernate 359
11.1 Introducción a Hibernate 359
11.2 Empaquetado de Hibernate 360
11.3 Hibernar
Introducción al soporte 361
11.3.1 Uso de Hibernate Session 363
11.3.2 Uso de HibernateDaoSupport clase 366
11.3.3 Elección entre HibernateTemplate y Session 368
p>11.4 Uso de Hibernate en aplicaciones empresariales 372
11.4.1 Prevención de actualizaciones de datos sucios 372
11.4.2 Equivalencia de objetos 375
11.4. 3 Soporte de transacciones 378
11.4.4 Carga diferida 382
11.5 Procesamiento de grandes conjuntos de datos 392
11.6 Procesamiento de objetos grandes 394
11.7 Utilice Hibernate para procesar otro código DAO 397
11.8 Resumen 398
Parte 3 Componentes de aplicaciones empresariales
Capítulo 12 Programación de tareas basadas en Spring 400
12.1 Usar JDK Timer para programar tareas 401
12.1.1 Tipo de disparador del temporizador 401
12.1.2 Crear una tarea simple 401
12.1.3 Spring's soporte para la programación del temporizador JDK 404
12.2 Uso de OpenSymphony Quartz para programar tareas 409
12.2.1 Introducción a Quartz 410
12.2 .2 Soporte de Spring para Quartz 418
12.3 Factores a considerar al programar tareas 423
12.3.1 Elección de un programador 423
12.3.2 Eliminación de la lógica de tareas en la clase de trabajo 424
12.3.3 Ejecución de tareas y grupo de subprocesos 424
12.4 Resumen 428
Capítulo 13 Soporte de correo electrónico de Spring 429 p>
13.1 Estructura de la API de Spring Mail 430
13.2 Enviar un correo electrónico simple 430
13.2.1 Construir y enviar correos electrónicos mediante programación 431
13.2.2 Construir correos electrónicos de forma declarativa 433
13.3 Construir y enviar mensajes MIME 436
13.3.1 Enviar mensajes HTML básicos 438
13.3.2 Enviar mensajes HTML con imágenes incrustadas 439
13.3.3 Enviar mensajes con archivos adjuntos 441
13.3.4 Envío de mensajes HTML con texto sin formato reemplazable 442
13.3.5 Envío de mensajes MIME complejos 445
13.4 Una comprensión más profunda de la empresa Nivel de procesamiento de correo electrónico 449
13.5 Resumen 458
Capítulo 14 Idiomas dinámicos 459
14.1 Descripción general de los lenguajes dinámicos admitidos 459
14.1 .1 BeanShell 459
14.1.2 Groovy 461
14.1.3 JRuby 462
14.2 Definición de Spring beans usando lenguaje dinámico 463
14.2.1 Detrás de escena del soporte de lenguaje dinámico 465
14.2.2 Beans de lenguaje dinámico proxy 466
14.2.3 Rendimiento 466
14.3 Bean actualizable (actualizable bean) 468
14.4 Bean basado en BeanShell 470
14.5 Bean basado en JRuby 472
14.6 Beans basados en Groovy 473
14.7 lenguaje dinámico
Aplicaciones típicas de lenguajes en programas Spring 473
14.8 Resumen 477
Parte 4 Desarrollo de aplicaciones Java EE 5
Capítulo 15 Acceso remoto a Spring 480
p>15.1 Arquitectura Spring Remoting 481
15.2 Invocación de método remoto 482
15.2.1 Abrir cualquier servicio 482
15.2.2 Acceso a través del servicio proxy RMI 484
15.2.3 Abrir el servicio CORBA 486
15.2.4 Acceder al servicio CORBA 488
15.3 Usar JAX-RPC para implementar servicios web 490
15.3.1 Introducción a Apache Axis 490
15.3.2 Utilice ServletEndpoint-Support para crear servicios web 490
15.3.3 Utilice un proxy para acceder a RPC Servicios web estilo 494 p>
15.3.4 Interactuar con JavaBeans de los servicios Axis 497
15.4 Usar servicios web JAX-WS 500
15.4.1 Exponer servicios web a través de SimpleJaxWsService-Exporter 501 p>
15.4.2 Exponer servicios web 501 usando XFire
15.4.3 Acceder a servicios web JAX-WS 503
15.4.4 Acceder a Java Servicios web 504 de otros clientes
15.5 Usar HTTP Invoker para crear un servicio web 507
15.5.1 Desarrollar un servicio simple 508
15.5.2 Acceder al servicio HTTP Invoker 510 a través de proxy
15.5.3 Uso de objetos arbitrarios en el servicio HTTP Invoker511
15.5.4 Uso de autenticación básica HTTP513
15.6 Elección de arquitectura remota516
15.7 Resumen 517
Capítulo 16 Gestión de transacciones 518
16.1 Introducción a la capa de abstracción de transacciones de Spring 518
16.2 Análisis de propiedades de transacciones 519
16.2 .1 Explorando la interfaz TransactionDefinition 519
16.2.2 Usando la interfaz TransactionStatus 520
16.2.3 Implementación de PlatformTransactionManager 521
16.3 Explorando una ejemplo de gestión de transacciones 521
16.4 Gestión de transacciones programáticas 529
16.4.1 Uso de la clase TransactionTemplate 531
16.4.2 Resumen de la gestión de transacciones programáticas 532
16.5 Gestión de transacciones declarativas 532
16.5.1 Uso de TransactionProxy-FactoryBean 532
16.5.2 Las implicaciones del uso de proxies en la gestión de transacciones 534
16.6 Gestión de transacciones AOP 535
16.6.1 Uso de la gestión de transacciones AOP basada en anotaciones 535
16.6.2 Uso de la gestión de transacciones XML AOP 537
16.6.3 tx :etiqueta de consejo Introducción 538
16.6.4 Resumen de XML AOP 539
16.7 Uso de transacciones en múltiples recursos transaccionales 540
16.8 Implementación de su propia sincronización de transacciones 541
16.9 Resumen 548
Capítulo 17 Desarrollo de aplicaciones web basado en Spring MVC 5
49
17.1 Arquitectura MVC 549
17.2 Introducción a Spring MVC 550
17.3 Uso del mapeo del procesador 551
17.4 Controlador Spring 553< / p>
17.4.1 Clase AbstractController 554
17.4.2 Clase ParameterizableView-Controller 555
17.4.3 Clase MultiActionController 555
17.5 Interceptor 558
17.6 Vistas, localización y temas 559
17.6.1 Usar vistas mediante programación 559
17.6.2 Usar analizadores de vistas 561
p>17.6.3 Usar mensajes localizados 565
17.6.4 Usar la configuración regional 565
17.6.5 Usar temas 565
17.7 Controlador de comandos 567
17.7.1 Usando el controlador de formulario 568
17.7.2 Explorando la clase AbstractWizardForm-Controller 574
17.7.3 Carga de archivos 578
17.8 Manejo de excepciones 581
17.9 Spring y otras tecnologías web 583
17.9.1 Usando JSP 583
17.9.2 Usando Velocity 600
17.9. 3 FreeMarker 604
17.9.4 Uso de la vista XSLT 608
17.9.5 Uso de la vista PDF 609
17.9.6 Implementación de la vista PDF 610
17.9.7 Usando Excel View 611
17.9.8 Usando Tiles 613
17.9.9 JasperReports Report Engine 623
17.10 Spring La convención es mejor que la configuración 627
17.10.1 Convención del controlador 628
17.10.2 Convención MultiActionController 628
17.10.3 Convención del modelo 629
17.10 .4 Ver convenciones 630
17.11 Uso de anotaciones para configurar controladores 631
17.11.1 Anotaciones @Controller 631
17.11.2 Anotaciones @RequestMapping 632
17.11.3 Anotación @RequestParam 633
17.11.4 Anotación @ModelAttribute 633
17.11.5 Usar anotaciones para configurar el controlador de comandos 634
17.12 Resumen 635
Capítulo 18 Spring Web Flow 636
18.1 Introducción a Spring Web Flow 637
18.1.1 Conceptos básicos 637
18.1 .2 Obtener Spring Web Flow 640
18.1.3 Dependencia de Spring Web Flow 642
18.2 ¡Hola, Web Flow 642
18.3 Estado de exploración 646
18.3.1 estado de vista 647
18.3.2 estado de decisión 647
18.3.3 estado final 648
18.4 Procesamiento de conversión 648
18.5 Conceptos Avanzados 650
18.5.1 Tabla
Lenguaje y alcance de expresión 650
18.5.2 Implementación de la acción 653
18.5.3 Enlace de datos del modelo 654
18.5.4 Actualización de vista parcial 658 p>
18.5.5 Mapeo de los parámetros de entrada y salida del flujo 658
18.5.6 Uso de subflujos 659
18.6 Spring Web Flow detrás de escena 660
18.6.1 Arquitectura de ejecución de flujo 660
18.6.2 Ejecutor de flujo 662
18.6.3 Registro de definición de flujo 662
18.6.4 Almacén de ejecución de flujo 665
18.7 Integración de Spring MVC 666
18.7.1 Procesamiento de flujo 666
18.7.2 Análisis de vistas 667
18.8 Uso de Spring Security Creación de un flujo seguro 668
18.8.1 Paso 1: Agregar SecurityFlow-ExecutionListener 668
18.8.2 Paso 2: Manejar la autenticación y autorización básicas 668
18.8.3 Paso 3: Definir reglas de seguridad en la definición de flujo 670
18.9 Resolución de problemas 672
18.9.1 Control de navegación con estado 672
18.9.2 Barra de navegación del navegador soporte y envío doble (doble envío) 672
18.10 Definición de flujo de prueba 673
18.11 Resumen 674
Capítulo 19 Spring con AJAX 675
19.1 DWR 675
19.2 Instalación de DWR 676
19.3 Configuración de resorte para DWR 676
19.4 Acerca del ejemplo completo 677
19.5 Pruebas Configuración de DWR 682
19.6 Ejecución del ejemplo completo 682
19.7 Conceptos básicos de secuencias de comandos DWR 683
19.7.1 Uso de la función de devolución de llamada simple 683
19.7.2 Llamar al objeto de metadatos 684
19.8 archivo Engine.js 684
19.8.1 Llamar al lote 684
19.8.2 Llamar a la secuencia 684
19.8.3 Manejo de errores y advertencias 684
19.9 script util.js 685
19.10 Seguridad DWR 685 p>
19.11 Ventajas y desventajas de DWR 686
19.12 Resumen 687
Capítulo 20 Usando Spring JMX 688
20.1 JMX Advanced 688
20.2 Abrir Java Bean 689
20.2.1 MBeanExporter clase 689
20.2.2 MBeanServer FactoryBean clase 691
20.2.3 En los Open Beans existentes en el servidor MBean 692
20.2 .4 Comportamiento de registro de Bean 692
20.3 Nombre del objeto de control 693
20.4 Interfaz de gestión de control 693
20.4.1 Interfaz MBeanInfoAssembler 693
20.4.2 Interfaz MethodNameBasedMBean-InfoAssembler 694
20.4.3 Usar la interfaz Java para controlar la interfaz de administración 696
20.4.4 Usar metadatos a nivel de fuente 698
20.5 Usando Spring JMX de forma remota 701
20.5.
1 Abrir MBean remoto 701
20.5.2 Acceder a MBean remoto 702
20.5.3 Proxy MBean 702
20.6 Notificación Spring JMX 703
20.6.1 Escucha de notificaciones 703
20.6.2 Notificación de publicación 704
20.7 Resumen 708
Capítulo 21 Pruebas con Spring 709
21.1 Realización de pruebas unitarias 709
21.2 Pruebas unitarias 711
21.3 Pruebas de integración 715
21.3.1 Uso de AbstractSpring-ContextTests 722
21.3 .2 Utilice la clase AbstractDependency-InjectionSpringContext-Tests 723
21.3.3 Utilice AbstractTransac-tionalSpringContextTest 726
21.3.4 Utilice AbstractAnnotation-AwareTransactionalTest 728
21.3.5 JNDI 731
21.4 Spring TestContext Framework 733
21.4.1 Contexto de aplicación e inyección de dependencia usando TestContext Framework 733
21.4.2 Usando TestContext Framework realizando inyección de dependencia 735
21.4.3 Transacciones en TestContext Framework 736
21.4.4 Clases de soporte 738
21.5 Cobertura de prueba 740
21.6 Resumen740 p>
Capítulo 22 Ajuste del rendimiento de Spring741
22.1 Rendimiento y respuesta741
22.2 Exploración de los problemas de rendimiento de las aplicaciones empresariales741
22.3 Medición del rendimiento de las aplicaciones Java EE742
22.3.1 Objetivos de medición742
22.3.2 Determinar los conjuntos de datos necesarios747
22.3.3 Mejorar la capa de acceso a datos748
22.3 .4 Mejorar la gestión de transacciones757
22.3.5 Controlar el rendimiento de las llamadas remotas758
22.3.6 Comprender el rendimiento de la vista758
22.4 Usar el caché 759
22.5 Pruebas de rendimiento 760
22.6 Monitoreo del estado y el rendimiento de la aplicación 762
22.7 Más ajustes del rendimiento Excelentes recursos 764
22.8 Resumen 764