Table of contents : Books for Professionals......Page 2 Contents at a Glance......Page 7 Contents......Page 9 About the Authors......Page 15 About the Technical Reviewer......Page 17 Acknowledgments......Page 19 Who This Book Is For......Page 21 How This Book Is Structured......Page 22 Contacting the Authors......Page 23 Solution......Page 25 Getting Beans from the IoC Container......Page 26 Creating the Bean Class......Page 27 Creating the Bean Configuration File......Page 28 Declaring Beans in the Bean Configuration File......Page 29 Defining Bean Properties by Shortcut......Page 30 Lists, Arrays, and Sets......Page 31 Maps and Properties......Page 33 Solution......Page 36 Auto-Wiring by Type......Page 37 Auto-Wiring by Constructor......Page 38 Auto-Wiring by Auto-Detection......Page 39 Solution......Page 40 Auto-Wiring a Single Bean of Compatible Type......Page 41 Auto-Wiring All Beans of Compatible Type......Page 43 Auto-Wiring by Type with Qualifiers......Page 44 Auto-Wiring by Name......Page 46 How It Works......Page 47 Scanning Components Automatically......Page 49 Filtering Components to Scan......Page 51 1-6. Setting Bean Scopes Problem......Page 52 How It Works......Page 53 Solution......Page 55 How It Works......Page 56 Setting the init-method and destroy-method Attributes......Page 58 Annotating the @PostConstruct and @PreDestroy Annotations......Page 59 How It Works......Page 60 Solution......Page 62 How It Works......Page 63 Injecting Resources......Page 64 How It Works......Page 65 Solution......Page 67 Before Advices......Page 68 After Advices......Page 69 After Returning Advices......Page 70 After Throwing Advices......Page 71 Around Advices......Page 72 How It Works......Page 73 Method Signature Patterns......Page 75 Type Signature Patterns......Page 77 Combining Pointcut Expressions......Page 78 Declaring Pointcut Parameters......Page 79 How It Works......Page 80 How It Works......Page 83 Summary......Page 85 What’s New in Spring 3.0?......Page 87 What Is REST?......Page 88 How It Works......Page 90 2-2. Using Java 5 Syntax in Spring Problem......Page 91 BeanFactory and FactoryBean......Page 92 ApplicationContext Events......Page 93 How It Works......Page 94 Java SE......Page 95 Spring’s Solution......Page 97 Features of the Language Syntax......Page 103 Uses of the Language in Your Configurations......Page 106 Using the Spring Expression Language Parser......Page 107 How It Works......Page 109 How It Works......Page 110 Data Access......Page 115 Setting Up the Application Database......Page 116 Understanding the Data Access Object Design Pattern......Page 117 Implementing the DAO with JDBC......Page 118 Configuring a Data Source in Spring......Page 120 3-1. Using a JDBC Template to Update a Database Problem......Page 122 Updating a Database with a Statement Creator......Page 123 Updating a Database with a SQL Statement and Parameter Values......Page 125 Batch Updating a Database......Page 126 3-2. Using a JDBC Template to Query a Database Problem......Page 127 Extracting Data with a Row Mapper......Page 128 Querying for Multiple Rows......Page 130 Querying for a Single Value......Page 131 Injecting a JDBC Template......Page 133 Extending the JdbcDaoSupport Class......Page 134 Using a Simple JDBC Template to Update a Database......Page 135 Using a Simple JDBC Template to Query a Database......Page 136 How It Works......Page 139 Solution......Page 141 Understanding Exception Handling in the Spring JDBC Framework......Page 142 Customizing Data Access Exception Handling......Page 145 3-7. Problems with Using ORM Frameworks Directly......Page 146 Persisting Objects Using the Hibernate API with Hibernate XML Mappings......Page 148 Persisting Objects Using the Hibernate API with JPA Annotations......Page 152 Persisting Objects Using JPA with Hibernate as the Engine......Page 153 Configuring a Hibernate Session Factory in Spring......Page 157 Configuring a JPA Entity Manager Factory in Spring......Page 161 Solution......Page 163 Using a Hibernate Template and a JPA Template......Page 164 Extending the Hibernate and JPA DAO Support Classes......Page 167 Solution......Page 169 How It Works......Page 170 3-11. Persisting Objects with JPA’s Context Injection Problem......Page 172 How It Works......Page 173 Summary......Page 176 Transaction Management in Spring......Page 177 4-1. Problems with Transaction Management......Page 178 Managing Transactions with JDBC Commit and Rollback......Page 184 Solution......Page 185 How It Works......Page 186 How It Works......Page 187 How It Works......Page 189 How It Works......Page 192 How It Works......Page 195 4-7. Setting the Propagation Transaction Attribute Problem......Page 196 Solution......Page 197 How It Works......Page 198 The REQUIRED Propagation Behavior......Page 199 The REQUIRES_NEW Propagation Behavior......Page 201 Solution......Page 202 How It Works......Page 204 The READ_UNCOMMITTED and READ_COMMITTED Isolation Levels......Page 205 The REPEATABLE_READ Isolation Level......Page 208 Setting the Isolation Level Attribute in Transaction Advices, Proxies, and APIs......Page 210 How It Works......Page 211 4-10. Setting the Timeout and Read-Only Transaction Attributes Problem......Page 212 How It Works......Page 213 How It Works......Page 214 Summary......Page 218 Solution......Page 219 How It Works......Page 220 Exposing an RMI Service......Page 221 Invoking an RMI Service......Page 222 Solution......Page 223 How It Works......Page 224 Creating EJB 2.x Components Without Spring’s Support......Page 225 Creating EJB 2.x Components with Spring’s Support......Page 228 How It Works......Page 230 Accessing EJB 2.x Components......Page 231 How It Works......Page 234 5-5. Accessing EJB 3.0 Components in Spring Problem......Page 235 Accessing EJB 3.0 Components with Spring’s Support......Page 236 Exposing a Hessian Service......Page 238 Exposing a Burlap Service......Page 240 Solution......Page 241 Contract-First Web Services......Page 242 5-8. Exposing and Invoking Web Services Using XFire Problem......Page 243 Exposing a Web Service Using XFire......Page 244 Inspecting the Generated WSDL File......Page 246 Exposing an Annotation-Based Web Service Using XFire......Page 248 Solution......Page 249 Creating Sample XML Messages......Page 250 Generating an XSD File from Sample XML Messages......Page 251 Previewing the Generated WSDL File......Page 252 5-10. Implementing Web Services Using Spring-WS Problem......Page 253 Solution......Page 254 Setting Up a Spring-WS Application......Page 255 Creating Service Endpoints......Page 256 Publishing the WSDL File......Page 258 How It Works......Page 259 Solution......Page 262 Creating Service Endpoints with XML Marshalling......Page 263 Invoking Web Services with XML Marshalling......Page 267 How It Works......Page 268 6-1. Exporting Spring Beans as JMX MBeans Problem......Page 271 How It Works......Page 272 Registering MBeans Without Spring’s Support......Page 274 Exporting Spring Beans as MBeans......Page 277 Exposing MBeans for Remote Access......Page 278 Assembling the Management Interface of MBeans......Page 279 Auto-Detecting MBeans by Annotations......Page 281 Publishing JMX Notifications......Page 283 Listening to JMX Notifications......Page 284 Accessing Remote MBeans Through an MBean Server Connection......Page 285 Accessing Remote MBeans Through an MBean Proxy......Page 287 How It Works......Page 288 Sending E-mail Using the JavaMail API......Page 290 Sending E-mail with Spring’s MailSender......Page 291 Defining an E-mail Template......Page 293 Sending MIME Messages......Page 294 Creating a Timer Task......Page 296 Using JDK Timer with Spring’s Support......Page 297 Solution......Page 298 Using Quartz Without Spring’s Support......Page 299 Using Quartz with Spring’s Support......Page 301 7-1. Sending and Receiving JMS Messages with Spring Problem......Page 305 How It Works......Page 306 Sending and Receiving Messages Without Spring’s Support......Page 307 Sending and Receiving Messages with Spring’s JMS Template......Page 312 Sending and Receiving Messages to and from a Default Destination......Page 315 7-2. Converting JMS Messages Problem......Page 317 Approach......Page 318 Solution......Page 320 Listening for JMS Messages with Message Listeners......Page 322 Listening for JMS Messages with POJOs......Page 324 Converting JMS Messages......Page 325 Using Spring’s JMS Schema......Page 327 Summary......Page 328 How It Works......Page 329 Solution......Page 330 Picking an Integration Style......Page 331 Building on an ESB Solution......Page 332 Building an MDP Using Spring Integration......Page 333 Using MessageHeaders for Fun and Profit......Page 337 Concerns in Dealing with a File System......Page 340 How it Works......Page 342 Modifying a Message’s Payload......Page 343 8-7. Error Handling Using Spring Integration Problem......Page 345 How It Works......Page 346 Building a Solution with Multiple Error channels......Page 347 Splitter......Page 348 Aggregators......Page 350 How It Works......Page 352 An Inbound Twitter Adapter......Page 353 A Simple MessageSource......Page 354 An Outbound Twitter Example......Page 360 How It Works......Page 363 How It Works......Page 364 SimpleMessagingGateway......Page 365 Breaking the Interface Dependency......Page 366 Summary......Page 370 Spring Batch......Page 371 Runtime Meta Model......Page 372 How It Works......Page 373 How It Works......Page 374 How It Works......Page 376 Solution......Page 377 How It Works......Page 378 The Job Configuration......Page 379 Input......Page 380 Output......Page 381 Writing a Custom ItemReader......Page 382 Writing a Custom ItemWriter......Page 383 How It Works......Page 384 Chaining Processors Together......Page 386 Transactions......Page 387 Solution......Page 388 Retry Template......Page 389 9-9. Controlling Step Execution Problem......Page 391 Concurrency......Page 392 Conditional Steps with Statuses......Page 393 Conditional Steps with Decisions......Page 394 Solution......Page 395 Accessing JobParameters......Page 396 Summary......Page 397 Distributed Spring......Page 399 Deploying a Simple Example with Terracotta......Page 401 Terracotta Architecture and Deployment......Page 406 How to Build a Terracotta XML Configuration File......Page 407 Approach......Page 409 Approach......Page 411 10-4. Load Balancing a Method Problem......Page 412 Approach......Page 413 Approach......Page 416 Solution......Page 418 Provisioning a Grid Node......Page 419 Node-Specific GridGain Configuration......Page 420 Summary......Page 423 jBPM and Spring......Page 425 Software Processes......Page 426 Approach......Page 429 Solution......Page 431 Approach......Page 434 The Application Context......Page 435 Approach......Page 440 Approach......Page 443 Summary......Page 446 OSGi and Spring......Page 447 Osgi and “JavaBeans™”......Page 448 The “Service”......Page 449 What is Maven?......Page 451 Installing Equinox......Page 452 Using the Service in a Client Bundle......Page 453 Approach......Page 456 12-3. How do I Export a Service Using Spring Dynamic Modules? Problem......Page 459 Approach......Page 460 Interfacing With the OSGi Runtime......Page 461 Ranking......Page 463 Service Attributes......Page 464 Approach......Page 465 You Want Spring To Process OSGi Annotations on Beans......Page 467 12-7. Using SpringSource dm Server Problem......Page 468 Approach......Page 469 Approach......Page 470 Summary......Page 471 A......Page 473 B......Page 474 C......Page 475 D......Page 477 E......Page 478 F......Page 479 I H......Page 480 J......Page 481 M......Page 483 N......Page 484 P......Page 485 Q......Page 486 R......Page 487 S......Page 488 T......Page 491 W......Page 492 X......Page 493