In the first-part of this two-part workshop, Mark will focus on the essentials of Enterprise Integration with Spring. First, he will take a whirlwind tour of Spring's enterprise integration support libraries. Next, he will discuss the "big picture" of an event-driven architecture based on messaging with an overview of key enterprise integration patterns. Attendees will leave with a clear understanding of Spring's integration capabilities and an appreciation for the benefits of message-driven architecture, ready to put that into practice in Part II.
Producing high-quality, testable code while remaining agile requires loosely-coupled, highly-cohesive components that are not tied to any particular infrastructure - in other words: separation of concerns. When building web applications, MVC frameworks provide an environment for achieving separation of web-specific concerns (such as HTTP requests) from an application's business logic. However, an enterprise Service Oriented Architecture may require many types of integration beyond the web-tier such that maintaining separation of concerns can become a significant challenge. Spring offers assistance with inversion of control, aspect-oriented programming, and a wide variety of service abstractions, but learning how to put the pieces together may not be immediately obvious. This session teaches how to put the pieces together to form an event-driven architecture.
Spring support libraries covered: - Remoting - JMX - Messaging - Scheduling - Mail
Enterprise Integration patterns discussed: - Message Channel - Message Endpoint - Message Router - Message Translator
Building on Part I, Part II of this workshop will demo a series of messaging systems built on Spring. The samples will exercise event-driven scenarios involving distributed architectures with messaging and remoting. Each sample will highlight a variety of important enterprise integration patterns.
Some samples will focus on routing to multiple endpoints based on message content. Others will focus on exposing a service for asynchronous as well as synchronous requests across multiple protocols. Still others will demonstrate translation of the message content in order to satisfy the requirements of multiple consumers. All of the samples will emphasize the need to maintain separation of concerns so that business logic is reusable in multiple environments and testable in isolation.
In this session, we will take a deep-dive into annotation-based dependency injection with Spring 2.5. You will learn how to combine annotation and XML formats, how to customize component scanning, and how to leverage Java 6 annotations within a Spring application. Since there is no "one size fits all" solution to application configuration, we will wrap up the discussion with general guidelines to consider when employing this approach.
Although XML is the most widely used format for Spring configuration, other options do exist including properties files, Spring's Java Configuration, and even Groovy builders. Spring 2.5 adds to this mix with support for Java's @Resource annotation and Spring's @Autowired annotation. Spring 2.5 also supports classpath scanning for Spring components. This session will provide a comprehensive overview of these new Spring 2.5 features for annotation-based configuration.