This Comprehensive Spring Boot bootcamp is focused on helping existing Java developers quickly   build and manage Spring Boot based applications. Instead of taking a traditional approach to Java EE development with Spring, the program begins by jumping right into Spring Boot. Using a progressive learning format, each session builds on the prior session so that when the boot camp completes, an engineer will have learned how to build and test comprehensive Spring Boot services. Spring Cloud topics will also be introduced including the scaling of applications using Docker containerization

Course Duration: 5 days
Prerequisites:

Students should have a java background.

Course Objectives:
  • Overview of Spring Core (focus on Java @Configuration)
  • Use Spring Boot starters to create new applications
  • Understand and use Spring Boot’s auto-configuration
  • Customize the configurations of services
  • Understand and use Spring Boot’s Web capabilities (focusing on Spring REST), including embedded servlet containers
  • Use Spring Data /Spring Data JPA capabilities
  • Be familiar with Spring Boot Data REST across JPA Entity Relationships, Projections and Excerpts
  • Use Spring Security and oAuth2 with Spring Boot
  • Understand and use Spring Boot’s Actuator and monitor services
  • Understand Spring cloud services such a Zuul edge services and Hystrix callback methods
  • Test Services via MockMvcBuilders and @SpringBootTest
Course Outline:

Spring Core XML Configuration

  • Setter Injection
  • Constructor Injection

Annotation Configuration

  • Spring, @Autowired, @Qualifier, @Value
  • JSR250, @Resource, @PostConstruct, @PreDestroy
  • JSR330, @Inject, @Named, @Singleton
  • JUnit and Spring

Java Configuration

  • @Configuration and @Bean
  • @ComponentScan, includeFilters and excludeFilters
  • PropertySourcesPlaceholderConfigurer and Expression Language (EL)
  • Spring Expression Language (SPEL)

Spring MVC Primer (brief)

  • DispatcherServlet
  • @RequestParam, @ModelAndView and @ModelAttributes

Spring Boot Basics

  • Spring Starter Projects
  • @SpringBootApplication and auto configuration
  • Using application.properties and application.yaml
  • Changing server port and context root
  • Using Spring Environment object and @Value
  • Logging
    • Commons Logging, Logback
    • Log4j2

Spring Boot Externalize Configuration

  • @Value versus @ConfigurationProperties
  • Relaxed Binding
  • JSR 303 Validation
  • Initializers and Command Line Runners
  • Dynamic Active Profile Selection
  • Controllers and ViewResolvers

Contollers and RestControllers

  • Creating Services, @GetMapping, @PostMapping, @RequestMapping, @ResponseBody, @RequestBody
  • @RequestParam with Optional
  • @PathVariable and URI Templates
  • ResponseEntity
  • Headers and status codes

RestControllers and Content Negotiation

  • Produces and consumes
  • Suffix Negotiation
  • Request parameter negotiation
  • Accept header negotiation
  • Deploying a service as a WAR

RestTemplate Clients

  • Using getForObject, getForEntity, exchange
  • Posting data to services
  • HttpEntity
  • HttpHeaders

Spring Boot Actuators

  • Health and Info Endpoints
  • Customizations in exposure
  • Custom metrics using Micrometer
  • @Endpoint custom actuators, @ReadOperation, @WriteOperation
  • EventListeners
  • Monitoring Services through Prometheus

Persistence Frameworks

  • JPA, EntityManagers, Entity Classes, Annotation mappings
  • Spring JPA Data, CrudRepository, PagingAndSortingRepository
  • Spring Data REST
  • @Projections and Excerpts
  • @OneToMany relationships
  • HAL Browser

Spring Cloud Introduction

  • Edge services using Zuul
  • Callback methods via Hystrix
  • Service Discovery
  • Scale Services with Docker Containers

Spring Security

  • Spring Security Overview
  • Authentication and Authorization
  • @EnableGlobalMethodSecurity
  • JdbcUserDetailsConfigurerManager and UserDetailsServices
  • HTTPS
  • Using OAuth2

Testing Services

  • Unit Tests
  • MockMvcBuilders and MockMvcRequestBuilders
  • @WebMvcTest
  • Using Mockito and @MockBean
  • Integration Tests with @SpringBootTest