Craig Walls
Spring im Einsatz
Inhalt
6
Vorwort
14
Danksagungen
16
Zu diesem Buch
18
Teil I: Der Kern von Spring
22
1 Spring ins kalte Wasser
24
1.1 Vereinfachte Java-Entwicklung
25
1.1.1 Die Kraft der POJOs entfesseln
26
1.1.2 Abhängigkeiten injizieren
27
1.1.3 Aspekte anwenden
31
1.1.4 Boilerplate-Code durch Vorlagen eliminieren
36
1.2 Beans im Container
38
1.2.1 Mit einem Anwendungskontext arbeiten
39
1.2.2 Ein Bohnenleben
40
1.3 Begutachtung der Spring-Landschaft
42
1.3.1 Die Spring-Module
42
1.3.2 Das Spring-Portfolio
45
1.4 Was ist neu?
49
1.4.1 Was ist neu bei Spring.2.5?
49
1.4.2 Was ist neu bei Spring.3.0?
50
1.4.3 Was ist neu im Spring-Portfolio?
50
1.5 Zusammenfassung
51
2 Verschalten von Beans
52
2.1 Deklarieren von Beans
53
2.1.1 Das Setup der Spring-Konfiguration
53
2.1.2 Eine einfache Bean deklarieren
55
2.1.3 Injektion über Konstruktoren
56
2.1.4 Geltungsbereiche für Beans
60
2.1.5 Beans initialisieren und zerstören
61
2.2 Injektion in Bean-Eigenschaften
63
2.2.1 Einfache Werte injizieren
64
2.2.2 Andere Beans referenzieren
65
2.2.3 Eigenschaften mit dem Spring-Namensraum p verschalten
69
2.2.4 Collections miteinander verschalten
69
2.2.5 Nichts (null) verschalten
74
2.3 Mit Ausdrücken verschalten
75
2.3.1 SpEL-Grundlagen
76
2.3.2 Operationen mit SpEL-Werten ausführen
79
2.3.3 Collections in SpEL
84
2.4 Zusammenfassung
88
3 Die XML-Konfiguration in Spring minimalisieren
90
3.1 Bean-Eigenschaften automatisch verschalten
91
3.1.1 Die vier Typen des Autowiring
91
3.1.2 Standard-Autowiring
95
3.1.3 Gemischter Einsatz von automatischer und expliziter Verschaltung
96
3.2 Verschalten mit Annotationen
97
3.2.1 Die Arbeit mit @Autowired
97
3.2.2 Auf Standards basierendes Autowiring mit @Inject
101
3.2.3 Annotationsinjektion und Expressions
104
3.3 Automatische Erkennung von Beans
105
3.3.1 Beans für Autodiscovery annotieren
105
3.3.2 Filtern mit component-scan
106
3.4 Die Java-basierte Konfiguration von Spring
108
3.4.1 Java-basierte Konfiguration einrichten
108
3.4.2 Eine Konfigurationsklasse definieren
109
3.4.3 Eine einfache Bean deklarieren
109
3.4.4 Injizieren mit der Java-basierten Konfiguration von Spring
110
3.5 Zusammenfassung
111
4 Aspektorientierung
112
4.1 Einführung in AOP
113
4.1.1 Die Terminologie zu AOP
114
4.1.2 Die AOP-Unterstützung in Spring
117
4.2 Joinpoints mit Pointcuts auswählen
119
4.2.1 Pointcuts schreiben
120
4.2.2 Der bean()-Bezeichner von Spring
121
4.3 Aspekte in XML deklarieren
122
4.3.1 Before- und After-Advice deklarieren
123
4.3.2 Around-Advice deklarieren
125
4.3.3 Parameter an Advices übergeben
127
4.3.4 Neue Funktionalitäten mit Aspekten
129
4.4 Aspekte annotieren
131
4.4.1 Around-Advices annotieren
133
4.4.2 Argumente an annotierte Advices übergeben
134
4.4.3 Introductions annotieren
135
4.5 AspectJ-Aspekte injizieren
136
4.6 Zusammenfassung
139
Teil II: Wesentliches über Spring-Anwendungen
140
5 Zugriff auf die Datenbank
142
5.1 Die Philosophie des Datenzugriffs in Spring
143
5.1.1 Die Exception-Hierarchie beim Datenzugriff in Spring
144
5.1.2 Datenzugriffsschablonen
147
5.1.3 Klassen für den DAO-Support
149
5.2 Datenquelle konfigurieren
150
5.2.1 JNDI-Datenquellen verwenden
150
5.2.2 Pooldatenquelle verwenden
151
5.2.3 Auf JDBC-Treiber basierende Datenquelle
153
5.3 JDBC und Spring gemeinsam verwenden
154
5.3.1 Wie man JDBC-Code in den Griff bekommt
154
5.3.2 Mit JDBC-Vorlagen arbeiten
157
5.4 Hibernate und Spring integrieren
163
5.4.1 Hibernate – ein Überblick
164
5.4.2 Wie man eine Hibernate-Session-Factory deklariert
165
5.4.3 Spring-freies Hibernate bauen
167
5.5 Spring und die Java Persistence API
168
5.5.1 Entity-Manager-Factory konfigurieren
169
5.5.2 DAO auf JPA-Basis erstellen
173
5.6 Zusammenfassung
175
6 Transaktionen verwalten
176
6.1 Grundlagen zu Transaktionen
177
6.1.1 Transaktionen – mit vier Wörtern erklärt
178
6.1.2 Spring-Support für die Transaktionsverwaltung
179
6.2 Auswahl eines Transaktionsmanagers
180
6.2.1 JDBC-Transaktionen
181
6.2.2 Hibernate-Transaktionen
182
6.2.3 JPA-Transaktionen
182
6.2.4 JTA-Transaktionen
183
6.3 Transaktionen in Spring programmieren
184
6.4 Transaktionen deklarieren
186
6.4.1 Transaktionsattribute definieren
187
6.4.2 Transaktionen in XML deklarieren
191
6.4.3 Annotationsgetriebene Transaktionen definieren
193
6.5 Zusammenfassung
195
7 Webapplikationen mit Spring MVC erstellen
196
7.1 Der Start mit Spring MVC
197
7.1.1 Einem Request durch Spring MVC folgen
197
7.1.2 Das Setup von Spring
199
7.2 Einen Basis-Controller schreiben
201
7.2.1 Konfiguration eines annotationsgetriebenen Spring MVC
202
7.2.2 Den Homepage-Controller definieren
203
7.2.3 Auflösung von Views
205
7.2.4 Definition der Homepage-View
209
7.2.5 Den Spring-Anwendungskontext vervollständigen
212
7.3 Controller-Input bearbeiten
213
7.3.1 Controller schreiben, der Input verarbeitet
213
7.3.2 Den View darstellen
216
7.4 Formulare verarbeiten
217
7.4.1 Das Registrierungsformular darstellen
218
7.4.2 Formulareingaben verarbeiten
220
7.4.3 Eingaben validieren
222
7.5 Der Umgang mit Datei-Uploads
226
7.5.1 Datei-Upload-Feld im Registrierungsformular
226
7.5.2 Hochgeladene Dateien empfangen
227
7.5.3 Spring für Datei-Uploads konfigurieren
230
7.6 Zusammenfassung
231
8 Die Arbeit mit Spring Web.Flow
232
8.1 Installieren von Spring Web.Flow
233
8.1.1 Konfigurieren von Web.Flow in Spring
233
8.2 Die Komponenten eines Flows
236
8.2.1 Zustände
236
8.2.2 Transitionen
240
8.2.3 Ablaufdaten
241
8.3 Zusammensetzen der Einzelteile: Der Pizza-Ablauf
243
8.3.1 Definieren des Basisablaufs
243
8.3.2 Kundeninformationen sammeln
247
8.3.3 Eine Bestellung bilden
252
8.3.4 Zahlungsannahme
255
8.4 Absichern von Web-Flows
257
8.5 Zusammenfassung
257
9 Spring absichern
260
9.1 Einführung in Spring Security
261
9.1.1 Der Start mit Spring Security
261
9.1.2 Der Konfigurationsnamensraum von Spring Security
262
9.2 Webanfragen absichern
263
9.2.1 Proxys für Servlet-Filter erstellen
264
9.2.2 Minimale Websicherheit konfigurieren
265
9.2.3 Requests abfangen
268
9.3 Die Absicherung von Elementen auf View-Ebene
271
9.3.1 Der Zugriff auf Authentifizierungsdetails
272
9.3.2 Darstellung nach jeweiliger Befugnis
273
9.4 Benutzer authentifizieren
275
9.4.1 Konfiguration eines speicherresidenten User-Repositorys
276
9.4.2 Authentifizierung gegenüber einer Datenbank
277
9.4.3 Authentifizierung gegenüber einem LDAP-Repository
279
9.4.4 Die Funktionalität „Auf diesem Computer merken“
282
9.5 Methoden sichern
283
9.5.1 Mit @Secured annotierte Methoden sichern
284
9.5.2 @RolesAllowed von JSR-250 verwenden
284
9.5.3 SpEL-Sicherheit mit Pre- und Post-Invocation
285
9.5.4 Sicherheits-Pointcuts auf Methodenebene deklarieren
290
9.6 Zusammenfassung
290
Teil III: Spring integrieren
292
10 Die Arbeit mit Remote-Diensten
294
10.1 Das Spring-Remoting im Überblick
295
10.2 Die Arbeit mit RMI
297
10.2.1 Einen RMI-Service exportieren
298
10.2.2 Einen RMI-Service verschalten
300
10.3 Remote-Services mit Hessian und Burlap veröffentlichen
303
10.3.1 Bean-Funktionalitäten mit Hessian und Burlap verfügbar machen
303
10.3.2 Zugriff auf Hessian-/Burlap-Services
306
10.4 Springs HTTP-Invoker verwenden
307
10.4.1 Beans als HTTP-Services verfügbar machen
308
10.4.2 Zugriff auf Services via HTTP
309
10.5 Webservices veröffentlichen und weiterverarbeiten
310
10.5.1 Spring-fähige JAX-WS-Endpunkte erstellen
312
10.5.2 JAX-WS-Services auf Client-Seite mit Proxy versehen
315
10.6 Zusammenfassung
317
11 Spring und REST
318
11.1 Representational State Transfer (REST)
319
11.1.1 Die Grundlagen von REST
319
11.1.2 Wie Spring REST unterstützt
320
11.2 Ressourcenorientierte Controller schreiben
320
11.2.1 Analyse eines nicht-REST-konformen Controllers
321
11.2.2 REST-konforme URLs bearbeiten
322
11.2.3 Die REST-Verben ausführen
325
11.3 Ressourcen repräsentieren
329
11.3.1 Die Repräsentation der Ressource verhandeln
329
11.3.2 Die Arbeit mit HTTP-Nachrichtenkonvertierern
332
11.4 REST-Clients schreiben
336
11.4.1 Die Operationen von RestTemplate
337
11.4.2 Ressourcen mit GET bekommen
338
11.4.3 Ressourcen mit PUT beziehen
341
11.4.4 Ressourcen mit DELETE löschen
343
11.4.5 Ressourcendaten mit POST zum Server bringen
344
11.4.6 Ressourcen austauschen
346
11.5 REST-konforme Formulare übermitteln
348
11.5.1 Versteckte Methodenfelder in JSP darstellen
349
11.5.2 Den echten Request demaskieren
350
11.6 Zusammenfassung
351
12 Messaging in Spring
354
12.1 Kurze Einführung in JMS
355
12.1.1 Die Architektur von JMS
356
12.1.2 Die Vorteile von JMS
358
12.2 Einen Message-Broker in Spring einrichten
360
12.2.1 Erstellen einer ConnectionFactory
360
12.2.2 Deklaration eines Nachrichtenendpunkts für ActiveMQ
361
12.3 Das JMS-Template von Spring
362
12.3.1 Umgang mit unübersichtlichem JMS-Code
363
12.3.2 Die Arbeit mit JMS-Templates
364
12.4 Erstellung nachrichtengetriebener POJOs
370
12.4.1 Erstellen eines Message-Listeners
371
12.4.2 Message-Listener konfigurieren
372
12.5 Die Arbeit mit nachrichtenbasierten RPCs
373
12.5.1 Die Arbeit mit nachrichtengetriebenen RPC in Spring
373
12.5.2 Asynchrones RPC mit Lingo
376
12.6 Zusammenfassung
378
13 Verwalten von Spring-Beans mit JMX
380
13.1 Spring-Beans als MBeans exportieren
381
13.1.1 Methoden über den Namen bereitstellen
384
13.1.2 Über Interfaces, die Operationen und Attribute von MBeans definieren
386
13.1.3 Die Arbeit mit von Annotierungen gesteuerten MBeans
387
13.1.4 Der Umgang mit MBean-Kollisionen
388
13.2 Remoting von MBeans
390
13.2.1 Exportieren von Remote-MBeans
390
13.2.2 Zugriff auf Remote-MBeans
391
13.2.3 Proxy für MBeans
392
13.3 Der Umgang mit Benachrichtigungen
394
13.3.1 Auf Benachrichtigungen lauschen
395
13.4 Zusammenfassung
396
14 Krimskrams
398
14.1 Die Konfiguration auslagern
398
14.1.1 Property-Placeholder ersetzen
399
14.1.2 Eigenschaften überschreiben
402
14.1.3 Externe Eigenschaften verschlüsseln
403
14.2 JNDI-Objekte verschalten
405
14.2.1 Die Arbeit mit konventionellem JNDI
406
14.2.2 Injektion von JNDI-Objekten
407
14.2.3 Verschaltung von EJBs in Spring
411
14.3 Der E-Mail-Versand
412
14.3.1 Konfiguration eines Mail-Senders
412
14.3.2 Konstruktion der E-Mail
414
14.4 Scheduling und Hintergrundaufgaben
420
14.4.1 Geplante Methoden deklarieren
420
14.4.2 Asynchrone Methoden deklarieren
422
14.5 Zusammenfassung
423
14.6 Das Ende …?
424
Register
426
© 2009-2024 ciando GmbH