How do you go about designing and building a complex web application while keeping the code maintainable and testable? This course, Architecting Web Applications with Spring, examines how to build your application from 'components,' where each component is a feature of your application. That feature is isolated as much as possible from the rest of the application and will contain all the code it needs. You'll be shown how to unit test these features by injecting dependencies to make them mockable, and how to use Mockito as the mocking framework that will allow features to be unit-tested. You'll learn how to integrate test components with support from Spring, as well as database integration, using Flyway to manage database migrations, and using Spring Data to access that data. Last, but not least, you'll discover how to use Spring Security to provide a layer of authentication and authorization to your application. By the end of this course, you'll be able to fully architect web apps with multiple components in Spring using code that you can easily test and maintain.