In this chapter, you have seen a wide range of Spring-specific features that complement the core IoC capabilities. You saw how to hook into the lifecycle of a bean and to make it aware of the Spring environment. We demonstrated how to use Method Injection to overcome the problem of dealing with beans with incompatible lifecycles, and we introduced FactoryBeans as a solution for IoC-enabling a wider set of classes. We also looked at how you can use PropertyEditors to simplify application configuration and to remove the need for artificial String-typed properties. Finally, we finished with an in-depth look at the additional features offered by the ApplicationContext including i18n, event publication, and resource access.
In the next chapter, we will look at the impact IoC, and in particular Dependency Injection, has on the design of the sample application. We will pay particular attention to the amount of up-front design that is required, the compatibility of Spring with test-driven development
(TDD) processes, and the realization that Spring allows us to design and build applications the way that we want.