Course Overview:
This course offers hands-on experience with the major features of Spring and Spring Boot, which includes configuration, data access, REST, AOP, auto-configuration, actuator, security, and Spring testing framework to build enterprise and microservices applications. On completion, participants will have a foundation for creating enterprise and cloud-ready applications.
Course Objectives:
Upon completion of this course, participants will understand how to implement the following:
- Spring configuration using Java Configuration and Annotations
- Aspect oriented programming with Spring
- Testing Spring applications using JUnit 5
- Spring Data Access – JDBC, JPA and Spring Data
- Spring Transaction Management
- Simplifying applications with Spring Boot
- Spring Boot auto-configuration, starters and properties
- Build a simple MVC application using Spring Boot, embedded Web Server and fat JARs or classic WARs
- Implementing REST with Spring MVC and RestTemplate
- Spring Security
- Enable and extend metrics and monitoring capabilities using Spring Boot actuator
- Utilize Spring Boot enhancements to testing
Pre-requisites:
- Good understanding of web-application development using Java, an IDE (Eclipse, STS or IntelliJ) and a Servlet engine such as Tomcat or Jetty, specific Java concepts (annotations and lambdas) and dependency management using Maven or Gradle.
- Java development experience
- Experience with Spring Framework (Spring Core, Spring MVC, Spring Security and Spring REST)
- Experience with Maven or Gradle
Target Audience:
- Application developers who want to increase their understanding of Spring with hands-on experience and a focus on fundamentals.
- Java Web Application Developers
Course Duration:
- 35 hours – 5 days
Course Content:
MODULE 1: INTRODUCTION TO SPRING
- Java configuration and the Spring application context
- @Configuration and @Bean annotations
- @Import: working with multiple configuration files Defining bean scopes
- Launching a Spring Application and obtaining Beans
MODULE 2: SPRING JAVA CONFIGURATION: A DEEPER LOOK
- External properties & Property sources
- Environment abstraction
- Using bean profiles
- Spring Expression Language (SpEL)
- How it Works: Inheritance based proxies
MODULE 3: ANNOTATION-BASED DEPENDENCY INJECTION
- Autowiring and component scanning
- Java configuration versus annotations, mixing.
- Lifecycle annotations: @PostConstruct and @PreDestroy
- Stereotypes and meta-annotations
MODULE 4: FACTORY PATTERN IN SPRING
- Using Spring FactoryBeans
MODULE 5: ADVANCED SPRING: HOW DOES SPRING WORK INTERNALLY?
The Spring Bean Lifecycle
- The BeanFactoryPostProcessor interception point
- The BeanPostProcessor interception point
- Spring Bean Proxies
- @Bean method return types
MODULE 6: ASPECT-ORIENTED PROGRAMMING
- What problems does AOP solve?
- Differences between Spring AOP and AspectJ
- Defining pointcut expressions
- Implementing an advice: @Around, @Before, @After
MODULE 7: TESTING A SPRING-BASED APPLICATION
- Spring and Test Driven Development
- Spring 5 integration testing with JUnit 5
- Application context caching and the @DirtiesContext annotation
- Profile selection with @ActiveProfiles
- Easy test data setup with @Sql
MODULE 8: DATA ACCESS AND JDBC WITH SPRING
- How Spring integrates with existing data access technologies
- DataAccessException hierarchy
- Implementing caching using @Cacheable Embedded databases for testing
- Spring‘s JdbcTemplate
MODULE 9: DATABASE TRANSACTIONS WITH SPRING
- Transactions overview
- Transaction management with Spring
- Isolation levels, transaction propagation and rollback rules
- Transactions and integration testing
MODULE 10: SPRING BOOT INTRODUCTION
- Introduction to Spring Boot
- Value Proposition of Spring Boot
- Creating a simple Boot application using Spring Initializer web-site
MODULE 11: SPRING BOOT DEPENDENCIES, AUTO-CONFIGURATION AND RUNTIME
- Dependency management using Spring Boot starters
- How auto-configuration works
- Configuration properties
- Overriding auto-configuration
- Using CommandLineRunner
MODULE 12: JPA WITH SPRING AND SPRING DATA
- Quick introduction to ORM with JPA
- Benefits of using Spring with JPA
- JPA configuration in Spring
- Configuring Spring JPA using Spring Boot
- Spring Data JPA dynamic repositories
MODULE 13: SPRING MVC ARCHITECTURE AND OVERVIEW
- Introduction to Spring MVC and request processing
- Controller method signatures
- Using @Controller, @RestController and @GetMapping annotations
- Configuring Spring MVC with Spring Boot
- Spring Boot packaging options, JAR or WAR
MODULE 14: REST WITH SPRING MVC
- An introduction to the REST architectural style
- Controlling HTTP response codes with @ResponseStatus
- Implementing REST with Spring MVC, @RequestMapping, @RequestBody and @ResponseBody
- Spring MVC’s HttpMessageConverters and automatic content negotiation
MODULE 15: SPRING SECURITY
- What problems does Spring Security solve?
- Configuring authentication
- Implementing authorization by intercepting URLs
- Authorization at the Java method level
- Understanding the Spring Security filter chain
MODULE 16: ACTUATORS, METRICS AND HEALTH INDICATORS
- Enabling Spring Boot Actuator
- Custom Metrics
- Health Indicators
- Creating custom Health Indicators
- External monitoring systems
MODULE 17: SPRING BOOT TESTING ENHANCEMENTS
- Spring Boot testing overview
- Integration testing and slices
- Slices to test different layers of the application