Red de conocimiento informático - Problemas con los teléfonos móviles - Directorio de programación avanzada de Spring

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

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

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

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

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

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

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

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

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