Suchen und Finden
Service
Infos und Kontakt
Inhalt
7
Vorwort
15
Vorwort zur ersten Auflage
17
Danksagung
19
Zu diesem Buch
21
Teil 1 Der Kern von Spring
26
1 Spring ins kalte Wasser
28
1.1 Was ist Spring?
29
1.1.1 Die Spring-Module
31
1.2 Der erste Schritt
35
1.3 Überblick über die Dependency Injection
38
1.3.1 Abhängigkeiten injizieren
38
1.3.2 DI im Einsatz
39
1.3.3 DI in Unternehmensanwendungen
45
1.4 Die aspektorientierte Programmierung
47
1.4.1 Einführung in AOP
47
1.4.2 AOP im Einsatz
48
1.5 Zusammenfassung
52
2 Grundlagen der Bean-Verschaltung
54
2.1 Beans im Container
55
2.1.1 Grundlagen zur BeanFactory
56
2.1.2 Mit einem Anwendungskontext arbeiten
58
2.1.3 Ein Bohnenleben
59
2.2 Beans erstellen
62
2.2.1 Eine einfache Bean deklarieren
62
2.2.2 Injektion über Konstruktoren
63
2.3 Injektion in Bean-Eigenschaften
68
2.3.1 Einfache Werte injizieren
69
2.3.2 Andere Beans referenzieren
70
2.3.3 Collections verschalten
73
2.3.4 Nichts (
78
verschalten
78
2.4 Autowiring
79
2.4.1 Die vier Typen des Autowiring
79
2.4.2 Gemischter Einsatz von automatischer und expliziter Verschaltung
83
2.4.3 Autowiring: Ja oder nein?
83
2.5 Steuerung der Bean-Erstellung
85
2.5.1 Geltungsbereiche für Beans
85
2.5.2 Beans aus Factory-Methoden erstellen
86
2.5.3 Beans initialisieren und zerstören
88
2.6 Zusammenfassung
90
3 Fortgeschrittene Bean-Verschaltung
92
3.1 Abgeleitete Beans deklarieren
93
3.1.1 Abstrahieren eines Bean-Basistyps
93
3.1.2 Gemeinsame Eigenschaften abstrahieren
96
3.2 Die Methodeninjektion
98
3.2.1 Methodenersetzung
99
3.2.2 Die Getter-Injektion
102
3.3 Nicht-Spring-Beans injizieren
104
3.4 Editoren für benutzerdefinierte Eigenschaften registrieren
106
3.5 Mit speziellen Spring-Beans arbeiten
109
3.5.1 Beans nachbearbeiten
110
3.5.2 Nachbearbeitung der
112
3.5.3 Konfigurationseigenschaften externalisieren
114
3.5.4 Textnachrichten auflösen
116
3.5.5 Entkopplung mit Anwendungsereignissen
117
3.5.6 Bewusstseinserweiterung für Beans
120
3.6 Skript-Beans
122
3.6.1 Wie die Limone in die Kokosnuss kommt
123
3.6.2 Beans skripten
124
3.6.3 Eigenschaften von Skript-Beans injizieren
127
3.6.4 Skript-Beans aktualisieren
128
3.6.5 Skript-Beans inline schreiben
128
3.7 Zusammenfassung
129
4 AdviceBeans
132
4.1 Einführung in AOP
133
4.1.1 Die Terminologie zu AOP
134
4.1.2 Der AOP-Support in Spring
137
4.2 Klassische Spring- Aspekte erstellen
140
4.2.1 Advices erstellen
142
4.2.2 Pointcuts und Advisors definieren
147
4.2.3 ProxyFactoryBeans verwenden
150
4.3 Autoproxying
153
4.3.1 Autoproxys für Spring-Aspekte erstellen
154
4.3.2 Autoproxying von @ AspectJ- Aspekten
155
4.4 Pure-POJO- Aspekte deklarieren
158
4.5 AspectJ- Aspekte injizieren
162
4.6 Zusammenfassung
165
Teil 2 Spring für Unternehmen
166
5 Zugriff auf die Datenbank
168
5.1 Die Philosophie des Datenzugriffs in Spring
169
5.1.1 Die Exception-Hierarchie beim Datenzugriff in Spring
171
5.1.2 Datenzugriffsschablonen
173
5.1.3 Klassen für den DAO-Support
175
5.2 Datenquelle konfigurieren
177
5.2.1 JNDI-Datenquellen verwenden
177
5.2.2 Pooldatenquelle verwenden
179
5.2.3 Auf JDBC-Treiber basierende Datenquelle
180
5.3 JDBC und Spring gemeinsam verwenden
181
5.3.1 Wie man JDBC-Code in den Griff bekommt
182
5.3.2 Mit JDBC-Vorlagen arbeiten
184
5.3.3 Springs DAO-Supportklassen für JDBC verwenden
190
5.4 Hibernate und Spring integrieren
193
5.4.1 Hibernate-Version auswählen
195
5.4.2 Hibernate-Vorlagen verwenden
196
5.4.3 DAOs auf Hibernate-Basis erstellen
199
5.4.4 Kontextabhängige Sessions in Hibernate 3
201
5.5 Spring und die Java Persistence API
203
5.5.1 JPA-Vorlagen verwenden
203
5.5.2 Entity-Manager-Factory konfigurieren
206
5.5.3 DAOs auf JPA-Basis erstellen
210
5.6 Spring und iBATIS
211
5.6.1 iBATIS-Clientvorlage konfigurieren
212
5.6.2 DAOs auf iBATIS-Basis erstellen
214
5.7 Caching
216
5.7.1 Caching-Lösung konfigurieren
217
5.7.2 Bean-Proxys für das Caching erstellen
221
5.7.3 Annotationsgetriebenes Caching
223
5.8 Zusammenfassung
225
6 Transaktionen verwalten
226
6.1 Grundlagen zu Transaktionen
227
6.1.1 Transaktionen – mit vier Wörtern erklärt
228
6.1.2 Spring-Support für die Transaktionsverwaltung
229
6.2 Auswahl eines Transaktionsmanagers
230
6.2.1 JDBC-Transaktionen
232
6.2.2 Hibernate-Transaktionen
232
6.2.3 JPA- Transaktionen
233
6.2.4 JDO-Transaktionen
234
6.2.5 JTA- Transaktionen
234
6.3 Transaktionen in Spring programmieren
235
6.4 Transaktionen deklarieren
237
6.4.1 Transaktionsattribute definieren
238
6.4.2 Transaktions-Proxys
242
6.4.3 Transaktionen in Spring 2.0 deklarieren
245
6.4.4 Annotationsgetriebene Transaktionen definieren
247
6.5 Zusammenfassung
249
7 Spring absichern
250
7.1 Einführung in Spring Security
251
7.2 Benutzer authentifizieren
255
7.2.1 Einen Provider-Manager konfigurieren
256
7.2.2 Authentifizierung gegenüber einer Datenbank
258
7.2.3 Authentifizierung gegenüber einem LDAP-Repository
265
7.3 Zugriffssteuerung
271
7.3.1 Über Zugriffsentscheidungen abstimmen
272
7.3.2 Die Stimmabgabe
273
7.3.3 Stimmenthaltungen
274
7.4 Webanwendungen absichern
275
7.4.1 Proxys für Spring Security-Filter erstellen
278
7.4.2 Sicherheitskontexte behandeln
284
7.4.3 Aufforderung zur Benutzeranmeldung
285
7.4.4 Sicherheits-Exceptions behandeln
290
7.4.5 Websicherheit erzwingen
291
7.4.6 Sicheren Kanal schützen
293
7.5 Sicherheit für die Darstellungsebene
295
7.5.1 Bedingtes Inhalts-Rendering
296
7.5.2 Authentifizierungsdaten anzeigen
297
7.6 Methodenaufrufe schützen
298
7.6.1 Sicherheitsaspekt erstellen
298
7.6.2 Methoden mit Metadaten absichern
300
7.7 Zusammenfassung
301
8 Spring und POJO-basierte Remote-Services
302
8.1 Das Spring-Remoting im Überblick
303
8.2 Mit RMI arbeiten
306
8.2.1 RMI-Services verschalten
306
8.2.2 RMI-Services exportieren
308
8.3 Remoting mit Hessian und Burlap
312
8.3.1 Zugriff auf Hessian-/Burlap-Services
312
8.3.2 Bean-Funktionalitäten mit Hessian und Burlap verfügbar machen
314
8.4 Springs HTTP-Invoker verwenden
318
8.4.1 Zugriff auf Services via HTTP
318
8.4.2 Beans als HTTP-Services verfügbar machen
319
8.5 Spring und Webservices
321
8.5.1 Beans als Webservices mit XFire exportieren
321
8.5.2 Webservices mit JSR-181- Annotationen erstellen
325
8.5.3 Webservices weiterverarbeiten
328
8.5.4 Proxys für Webservices mit einem XFire-Client erstellen
334
8.6 Zusammenfassung
335
9 Erstellen von Contract First Web Services in Spring
336
9.1 Einführung in Spring Web Services
338
9.2 Den Kontrakt (zuerst!) definieren
340
9.2.1 Erstellen von Beispiel-XML-Nachrichten
340
9.3 Umgang mit Nachrichten mit Dienstendpunkten
345
9.3.1 Erstellen eines JDOM-basierten Nachricht-Endpunkts
346
9.3.2 Marshalling von Nachrichten-Payloads
348
9.4 Die gemeinsame Verschaltung
351
9.4.1 Spring-WS im Gesamtzusammenhang
352
9.4.2 Nachrichten auf Endpunkte mappen
353
9.4.3 Verschalten des Dienstendpunkts
354
9.4.4 Einen Nachrichten-Marshaller konfigurieren
354
9.4.5 Umgang mit Endpunkt-Exceptions
357
9.4.6 Die Arbeit mit WSDL-Dateien
358
9.4.7 Den Dienst deployen
362
9.5 Verarbeitung von Spring-WS-Webservices
362
9.5.1 Die Arbeit mit Webservice-Templates
363
9.5.2 Die Arbeit mit WebServiceGatewaySupport
369
9.6 Zusammenfassung
370
10 Messaging in Spring
372
10.1 Kurze Einführung in JMS
373
10.1.1 Die Architektur von JMS
374
10.1.2 Die Vorteile von JMS
377
10.1.3 Einrichtung von ActiveMQ in Spring
379
10.2 JMS im Einsatz mit Spring
380
10.2.1 Umgang mit unübersichtlichem JMS-Code
380
10.2.2 Die Arbeit mit JMS-Templates
382
10.2.3 Nachrichten konvertieren
388
10.2.4 Die Gateway-Support-Klassen von Spring in JMS
391
10.3 Erstellung nachrichtengetriebener POJOs
392
10.3.1 Erstellen eines Message-Listeners
393
10.3.2 Das Schreiben reiner POJO-MDBs
396
10.4 Die Arbeit mit nachrichtenbasierten RPCs
400
10.4.1 Einführung in Lingo
401
10.4.2 Den Service exportieren
402
10.4.3 JMS und Proxy
403
10.5 Zusammenfassung
405
11 Spring und Enterprise JavaBean
406
11.1 Verschaltung von EJBs in Spring
407
11.1.1 Session-Beans und Proxys (EJB 2.x)
408
11.1.2 Verschalten von EJBs mit Spring-Beans
412
11.2 Entwicklung von Spring-fähigen EJBs (EJB 2.x)
413
11.3 Spring und EJB 3
415
11.3.1 Pitchfork
416
11.3.2 Der Start mit Pitchfork
417
11.3.3 Ressourcen durch Annotationen injizieren
418
11.3.4 Deklaration von Interceptors über Annotationen
419
11.4 Zusammenfassung
420
12 Zugriff auf Enterprise-Services
422
12.1 Objekte von JNDI verschalten
423
12.1.1 Die Arbeit mit konventionellem JNDI
424
12.1.2 Injektion von JNDI-Objekten
426
12.1.3 Verschalten von JNDI-Objekten in Spring 2
429
12.2 Der E-Mail-Versand
430
12.2.1 Konfiguration eines Mail-Senders
430
12.2.2 Konstruktion der E-Mail
432
12.3 Zeitplanung für Tasks
435
12.3.1 Zeitplanung mit dem Timer von Java
435
12.3.2 Der Quartz Scheduler
438
12.3.3 Methoden bei einem Zeitplan aufrufen
442
12.4 Verwalten von Spring-Beans mit JMX
444
12.4.1 Spring-Beans als MBeans exportieren
444
12.4.2 Remoting von MBeans
453
12.4.3 Benachrichtigungen
457
12.5 Zusammenfassung
459
Teil 3 Spring auf der Client-Seite
462
13 Umgang mit Webanfragen
464
13.1 Der Start mit Spring MVC
465
13.1.1 Ein Tag im Leben einer Anfrage
465
13.1.2 Die Konfiguration von DispatcherServlet
467
13.1.3 Spring MVC im Überblick
469
13.2 Anfragen den Controllern zuordnen
475
13.2.1 Die Arbeit mit
476
13.2.2 Die Arbeit mit
477
13.2.3 Zuordnung von Controllern über Metadaten
478
13.2.4 Die Arbeit mit mehreren Handler-Mappings
478
13.3 Die Bearbeitung von Anfragen durch Controller
479
13.3.1 Verarbeitung von Befehlen
482
13.3.2 Formulareingaben verarbeiten
484
13.3.3 Verarbeitung komplexer Formulare mit Assistenten
491
13.3.4 Die Arbeit mit Throwaway-Controllern
498
13.4 Umgang mit Exceptions
501
13.5 Zusammenfassung
501
14 Darstellen von Web-Views
504
14.1 Auflösung von Views
505
14.1.1 Die Arbeit mit Template-Views
506
14.1.2 Auflösen von View-Beans
508
14.1.3 Wahl eines View-Resolvers
510
14.2 Die Arbeit mit JSP-Templates
512
14.2.1 Binding von Formulardaten
512
14.2.2 Darstellung von ausgelagerten Nachrichten
514
14.2.3 Fehlerausgabe
516
14.3 Seitenlayout mit Tiles
518
14.3.1 Tiles-Views
518
14.3.2 Erstellen von Controllern in Tiles
522
14.4 Alternativen zu JSP
524
14.4.1 Die Arbeit mit Velocity- Templates
524
14.4.2 Die Arbeit mit FreeMarker
530
14.5 Generierung von Nicht-HTML-Ausgaben
535
14.5.1 Erstellung von Excel-Tabellen
535
14.5.2 Generierung von PDF-Dokumenten
538
14.5.3 Entwicklung eigener Views
540
15 Die Arbeit mit Spring Web Flow
544
15.1 Der Einstieg bei Spring Web Flow
546
15.1.1 Die Arbeit mit Spring Web Flow
548
15.1.2 Wesentliche Grundzüge von Spring Web Flow
551
15.1.3 Erstellen eines Ablaufs
553
15.2 Die Grundlagen für den Ablauf
554
15.2.1
554
15.2.2 Start- und Endzustände
556
15.2.3 Die Kundeninformationen
557
15.2.4 Die Pizzabestellung
563
15.2.5 Abschließen der Bestellung
566
15.2.6 Einige Feinarbeiten
568
15.3 Fortgeschrittene Webflow-Techniken
571
15.3.1 Die Arbeit mit Entscheidungszuständen
572
15.3.2 Extrahierung von Unterabläufen und Unterzuständen
574
15.4 Spring Web Flow mit anderen Frameworks integrieren
578
15.4.1 Jakarta Struts
578
15.4.2 JavaServer Faces
579
15.5 Zusammenfassung
580
16 Integration mit anderen Webframeworks
582
16.1 Die gemeinsame Nutzung von Spring und Struts
583
16.1.1 Registrieren des Spring-Plug-ins bei Struts
584
16.1.2 Das Schreiben von Spring-fähigen Struts-Actions
585
16.1.3 Delegation an in Spring konfigurierte Actions
587
16.1.4 Was ist mit Struts 2?
589
16.2 Die Arbeit mit Spring und WebWork 2/Struts 2
590
16.3 Integration von Spring und Tapestry
593
16.3.1 Integration von Spring und Tapestry 3
594
16.3.2 Integration von Spring und Tapestry 3
597
16.4 Spring mit JSF ein Gesicht verleihen
598
16.4.1 Auflösen von über JSF verwalteten Eigenschaften
599
16.4.2 Auflösung von Spring-Beans
601
16.4.3 Spring-Beans mit JSF-Seiten verwenden
602
16.4.4 Der Anwendungskontext in JSF
603
16.5 Durch DWR Ajax mit Spring-Anwendungen einsetzen
603
16.5.1 Direct Web Remoting
604
16.5.2 Zugriff mit DWR auf in Spring verwaltete Beans
612
16.6 Zusammenfassung
617
A Das Setup von Spring
618
A. 1 Download von Spring
618
A. 1.1 Die Spring-Distribution
619
A. 1.2 Erstellen des Klassenpfads
620
A. 2 Spring- Abhängigkeit in Maven 2 konfigurieren
621
A. 3 Spring und Ant
624
A. 4 Spring und Log4j
625
B Tests mit (und ohne) Spring
628
B.1 Einführung in das Testverfahren
628
B.1.1 Die unterschiedlichen Testverfahren
629
B.1.2 Die Arbeit mit JUnit
630
B.1.3 Die Rolle von Spring bei Tests
633
B.2 Unit-Tests für Spring MVC Controller
634
B.2.1 Mock-Objekte
635
B.2.2 Testen der Inhalte von
638
B.3 Integrationstest mit Spring
640
B.3.1 Testen verschalteter Objekte
641
B.3.2 Integrationstests von transaktionalen Objekten
644
B.3.3 Tests mit der Datenbank
646
B.3.4 Tests in JUnit 4 mit gienah
649
B.4 Zusammenfassung
651
Register
652
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.; Ersparnis im Vergleich zur Printversion





















