Hello. Welcome to our Spring Specialization suite of courses. This specialization has four courses, Spring EcoSystem and Core, Spring MVC, Spring Boot and RestControllers, Spring Data Repositories and Spring Cloud Overview. In the Spring EcoSystem and Core course, we will identify what the Spring framework is, the key principles of inversion of control and dependency injection. We will talk about what the ApplicationContext is, and the different types of injections such as setter and constructor injection to wire up our Spring-managed beans. This part of the course will utilize XML as a means of defining what beans are injected into what, after which we will move on to using different types of metadata for Spring dependency injection annotations, and then Java configuration classes. We will also look at how we can use expressions, both Expression Language or EL and Spring Expression Language or SPEL to make our configurations more dynamic. Then we will also talk about conditional sync configuration, what Spring-managed beans to include or exclude in a configuration, depending on whether you're in a certain environment or whether you're just testing an application. The Spring MVC, Spring Boot and RestControllers course will talk about how we define RestControllers utilizing the Spring model-view-controller framework in a Spring Boot application. We will talk about how we can configure the Spring Boot applications using various techniques of externalizations, such as properties files and YAML files. We will define RESTful Web Services that can receive request parameters or we can post or push data to those RESTful Web Services using HTTP. We shall also talk about how our RESTful Web Services can undergo content negotiation, that is the client is asking for a response in a specific metadata type such as JSON and XML, can we provide the response in that format? We will then create Java clients to call our RESTful Web Services using RestTemplate in its extensive API. Then finally, we'll talk about how we can create controllers, which will utilize the Spring Boot architecture to render webpages or views. The Spring Data Repositories course, we'll talk about how we can integrate Java Persistence Architecture or JPI with Spring in order to access databases. We will then simplify our interactions by using the abstraction called Spring Data repositories. We will then talk about Aspect Oriented Programming, where we could do logging, security, transaction management, and indeed after that, we will look at transaction management in Spring applications. In the Spring Cloud Overview course, we will talk about how Spring Boot is being used extensively for micro-service development, so we will look at the principles and patterns associated with micro-service architectures. We will talk about service registries and service registration. We will talk about how services discover other services utilizing service registries, and how they will interact with them in a client-side load balancing manner to maximize availability of services. We shall also talk about circuit breakers. Basically, this is when services fail, what do you want to do? Is there some sort of default fallback method that you want to invoke? Then finally, we will talk about the different types of Client Services at the various projects associated with Spring Cloud, we often refer to these as gateways, and how gateways can be used to filter requests or responses that are going into and out of our micro-service architectures.