<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE FL_Course SYSTEM "https://www.flane.de/dtd/fl_course095.dtd"><?xml-stylesheet type="text/xsl" href="https://portal.flane.ch/css/xml-course.xsl"?><course productid="36160" language="en" source="https://portal.flane.ch/swisscom/en/xml-course/innovator-sctp" lastchanged="2025-07-29T12:18:45+02:00" parent="https://portal.flane.ch/swisscom/en/xml-courses"><title>Spring Core Training Plus</title><productcode>SCTP</productcode><vendorcode>IC</vendorcode><vendorname>Innovator Class</vendorname><fullproductcode>IC-SCTP</fullproductcode><version>1.0</version><objective>&lt;p&gt;By the end of the course, you should have acquired the following knowledge and skills:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure Spring using Java configuration and annotations, understand and use dependency injection and properties&lt;/li&gt;&lt;li&gt;Understand aspect-oriented programming (AOP) with Spring and use it for application development&lt;/li&gt;&lt;li&gt;Integration test Spring applications with JUnit 5&lt;/li&gt;&lt;li&gt;Spring Data Access &amp;ndash; select and apply Spring JDBC, JPA, and Spring Data according to appropriate criteria&lt;/li&gt;&lt;li&gt;Understand Spring Transaction Management and configure it according to practical criteria&lt;/li&gt;&lt;li&gt;Set up a Spring Boot application&lt;/li&gt;&lt;li&gt;Know and use Spring Boot simplifications and conventions: autoconfiguration, Spring Boot Starter, dependencies, managing properties, and the build process&lt;/li&gt;&lt;li&gt;Create a REST application with Spring Boot, an embedded web server, and fat JARs or classic WARs while adhering to REST principles&lt;/li&gt;&lt;li&gt;Implement REST client applications using RestTemplate, RestClient, and WebClient, and select them according to appropriate criteria&lt;/li&gt;&lt;li&gt;Understand and use Spring Boot extensions for testing&lt;/li&gt;&lt;li&gt;Spring Security: authentication, authorization, password encryption, database storage of user credentials Configure, customize, implement, and test an OAuth2 resource server with JSON Web Token (JWT)&lt;/li&gt;&lt;li&gt;Enable and extend metrics and monitoring functions with Spring Boot Actuator&lt;/li&gt;&lt;/ul&gt;</objective><essentials>&lt;p&gt;Some experience as a developer with Java, an IDE (Eclipse, STS or IntelliJ) and build tools such as Maven or Gradle.&lt;/p&gt;</essentials><audience>&lt;p&gt;Application developers who want to deepen their understanding of Spring and Spring Boot with practical experience and a focus on the fundamentals.&lt;/p&gt;</audience><contents>&lt;ul&gt;
&lt;li&gt;Introduction to Spring: Principles and Definition&lt;/li&gt;&lt;li&gt;Spring Java Configuration, Annotation-Based Configuration, Dependency Injection&lt;/li&gt;&lt;li&gt;BeanFactory, Dynamic Proxies, Resource Abstraction: The Cornerstones of Spring&lt;/li&gt;&lt;li&gt;Advanced Spring: How the Spring Application Context Works Internally&lt;/li&gt;&lt;li&gt;Aspect-Oriented Programming for Application Developers&lt;/li&gt;&lt;li&gt;Testing a Spring-Based Application&lt;/li&gt;&lt;li&gt;Data Access and JDBC Abstraction with Spring&lt;/li&gt;&lt;li&gt;Database Transactions with Spring&lt;/li&gt;&lt;li&gt;Introduction to Spring Boot&lt;/li&gt;&lt;li&gt;Spring Boot Dependencies, Autoconfiguration, Properties, and Build&lt;/li&gt;&lt;li&gt;JPA with Spring, SpringBoot, and Spring Data&lt;/li&gt;&lt;li&gt;Spring MVC for Dynamic Web Applications and REST&lt;/li&gt;&lt;li&gt;REST with Spring MVC: A full backend application&lt;/li&gt;&lt;li&gt;Spring Boot Test Improvements&lt;/li&gt;&lt;li&gt;Spring Security: Authentication, Authorization, OAuth2 Resource Server with JWT&lt;/li&gt;&lt;li&gt;Actuators, Metrics, and Health Indicators&lt;/li&gt;&lt;/ul&gt;</contents><outline>&lt;h5&gt;Introduction to Spring&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Java configuration and the Spring application context&lt;/li&gt;&lt;li&gt;@Configuration and @Bean annotations&lt;/li&gt;&lt;li&gt;@Import: working with multiple configuration files&lt;/li&gt;&lt;li&gt;Defining bean scopes&lt;/li&gt;&lt;li&gt;Launching a Spring Application and obtaining Beans&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Spring JAVA Configuration: A Deeper Look&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;External properties &amp;amp; Property sources&lt;/li&gt;&lt;li&gt;Environment abstraction&lt;/li&gt;&lt;li&gt;Using bean profiles&lt;/li&gt;&lt;li&gt;Spring Expression Language (SpEL)&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Annotation-based Dependency Injection&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Component scanning&lt;/li&gt;&lt;li&gt;Dependency Injection using @Autowired&lt;/li&gt;&lt;li&gt;Java configuration versus annotations, mixing, best practices&lt;/li&gt;&lt;li&gt;Lifecycle annotations: @PostConstruct and @PreDestroy&lt;/li&gt;&lt;li&gt;Stereotypes (@Service, @Repository, etc.) and meta-annotations&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Factory Pattern in Spring&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Using Spring FactoryBeans&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Advanced Spring: How Does Spring Work Internally?&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;The Spring Bean Lifecycle&lt;/li&gt;&lt;li&gt;BeanFactoryPostProcessor and BeanPostProcessor&lt;/li&gt;&lt;li&gt;Spring Bean Proxies&lt;/li&gt;&lt;li&gt;Best Practice for bean types and bean names&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Aspect-oriented programming&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;What problems does AOP solve?&lt;/li&gt;&lt;li&gt;Defining pointcut expressions&lt;/li&gt;&lt;li&gt;Implementing various types of advice&lt;/li&gt;&lt;li&gt;Application development with AOP&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Testing a Spring-based Application&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Spring 5 integration testing with JUnit 5&lt;/li&gt;&lt;li&gt;Application context caching and the @DirtiesContext annotation&lt;/li&gt;&lt;li&gt;Profile selection with @ActiveProfiles&lt;/li&gt;&lt;li&gt;Easy test data setup with @Sql&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Data Access and JDBC with Spring&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;How Spring integrates with existing data access technologies&lt;/li&gt;&lt;li&gt;DataAccessException hierarchy and @Repository&lt;/li&gt;&lt;li&gt;Spring&amp;lsquo;s JdbcTemplate and callback interfaces&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Database Transactions with Spring&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Transactions overview&lt;/li&gt;&lt;li&gt;Transaction management with Spring&lt;/li&gt;&lt;li&gt;Transaction propagation and rollback rules&lt;/li&gt;&lt;li&gt;Transactions and integration testing&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Spring Boot Introduction&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Introduction to Spring Boot Features&lt;/li&gt;&lt;li&gt;Value Proposition of Spring Boot&lt;/li&gt;&lt;li&gt;Creating a simple Boot application using Spring Initializer website&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Spring Boot Dependencies, Auto-configuration, and Runtime&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Dependency management using Spring Boot starters&lt;/li&gt;&lt;li&gt;How auto-configuration works&lt;/li&gt;&lt;li&gt;Configuration properties with Spring Boot&lt;/li&gt;&lt;li&gt;Overriding auto-configuration&lt;/li&gt;&lt;li&gt;Using CommandLineRunner and ApplicationRunner&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;JPA with Spring and Spring Data&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Quick introduction to ORM with JPA&lt;/li&gt;&lt;li&gt;Benefits of using Spring with JPA&lt;/li&gt;&lt;li&gt;JPA configuration in Spring&lt;/li&gt;&lt;li&gt;Configuring Spring JPA using Spring Boot&lt;/li&gt;&lt;li&gt;Spring Data JPA dynamic repositories&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Spring MVC Architecture and Overview&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Introduction to Spring MVC and request processing&lt;/li&gt;&lt;li&gt;Controller method signatures&lt;/li&gt;&lt;li&gt;Using @Controller, @RestController, @RequestMapping, @GetMapping, etc, annotations&lt;/li&gt;&lt;li&gt;Configuring Spring MVC with Spring Boot&lt;/li&gt;&lt;li&gt;Spring Boot packaging options, JAR or WAR&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Rest with Spring MVC&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;An introduction to the REST architectural style&lt;/li&gt;&lt;li&gt;Controlling HTTP response codes with @ResponseStatus&lt;/li&gt;&lt;li&gt;Implementing REST with Spring MVC, @RequestBody and @ResponseBody&lt;/li&gt;&lt;li&gt;Spring MVC&amp;rsquo;s HttpMessageConverters and automatic content negotiation&lt;/li&gt;&lt;li&gt;REST clients with RestTemplate, RestClient and WebClient: selection and implementation&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Spring Boot Testing Enhancements and abstractions&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Spring Boot testing overview&lt;/li&gt;&lt;li&gt;Integration testing using @SpringBootTest&lt;/li&gt;&lt;li&gt;Web slice testing with MockMvc framework&lt;/li&gt;&lt;li&gt;Slices to test different layers of the application&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Spring Security&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;What problems does Spring Security solve?&lt;/li&gt;&lt;li&gt;Configuring authentication&lt;/li&gt;&lt;li&gt;Implementing authorization by URL Matching&lt;/li&gt;&lt;li&gt;Authorization at the Java method level&lt;/li&gt;&lt;li&gt;Understanding the Spring Security filter chain&lt;/li&gt;&lt;li&gt;Spring security testing&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;The Resource Server in OAuth 2.0&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Configuring and implementing a secure web-application with JSON Web Token-based authorization&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Actuators, Metrics and Health Indicators&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Exposing and querying Spring Boot Actuator endpoints&lt;/li&gt;&lt;li&gt;Custom Metrics&lt;/li&gt;&lt;li&gt;Health Indicators&lt;/li&gt;&lt;li&gt;Creating custom Health Indicators&lt;/li&gt;&lt;/ul&gt;</outline><objective_plain>By the end of the course, you should have acquired the following knowledge and skills:


- Configure Spring using Java configuration and annotations, understand and use dependency injection and properties
- Understand aspect-oriented programming (AOP) with Spring and use it for application development
- Integration test Spring applications with JUnit 5
- Spring Data Access – select and apply Spring JDBC, JPA, and Spring Data according to appropriate criteria
- Understand Spring Transaction Management and configure it according to practical criteria
- Set up a Spring Boot application
- Know and use Spring Boot simplifications and conventions: autoconfiguration, Spring Boot Starter, dependencies, managing properties, and the build process
- Create a REST application with Spring Boot, an embedded web server, and fat JARs or classic WARs while adhering to REST principles
- Implement REST client applications using RestTemplate, RestClient, and WebClient, and select them according to appropriate criteria
- Understand and use Spring Boot extensions for testing
- Spring Security: authentication, authorization, password encryption, database storage of user credentials Configure, customize, implement, and test an OAuth2 resource server with JSON Web Token (JWT)
- Enable and extend metrics and monitoring functions with Spring Boot Actuator</objective_plain><essentials_plain>Some experience as a developer with Java, an IDE (Eclipse, STS or IntelliJ) and build tools such as Maven or Gradle.</essentials_plain><audience_plain>Application developers who want to deepen their understanding of Spring and Spring Boot with practical experience and a focus on the fundamentals.</audience_plain><contents_plain>- Introduction to Spring: Principles and Definition
- Spring Java Configuration, Annotation-Based Configuration, Dependency Injection
- BeanFactory, Dynamic Proxies, Resource Abstraction: The Cornerstones of Spring
- Advanced Spring: How the Spring Application Context Works Internally
- Aspect-Oriented Programming for Application Developers
- Testing a Spring-Based Application
- Data Access and JDBC Abstraction with Spring
- Database Transactions with Spring
- Introduction to Spring Boot
- Spring Boot Dependencies, Autoconfiguration, Properties, and Build
- JPA with Spring, SpringBoot, and Spring Data
- Spring MVC for Dynamic Web Applications and REST
- REST with Spring MVC: A full backend application
- Spring Boot Test Improvements
- Spring Security: Authentication, Authorization, OAuth2 Resource Server with JWT
- Actuators, Metrics, and Health Indicators</contents_plain><outline_plain>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
Spring JAVA Configuration: A Deeper Look


- External properties &amp; Property sources
- Environment abstraction
- Using bean profiles
- Spring Expression Language (SpEL)
Annotation-based Dependency Injection


- Component scanning
- Dependency Injection using @Autowired
- Java configuration versus annotations, mixing, best practices
- Lifecycle annotations: @PostConstruct and @PreDestroy
- Stereotypes (@Service, @Repository, etc.) and meta-annotations
Factory Pattern in Spring


- Using Spring FactoryBeans
Advanced Spring: How Does Spring Work Internally?


- The Spring Bean Lifecycle
- BeanFactoryPostProcessor and BeanPostProcessor
- Spring Bean Proxies
- Best Practice for bean types and bean names
Aspect-oriented programming


- What problems does AOP solve?
- Defining pointcut expressions
- Implementing various types of advice
- Application development with AOP
Testing a Spring-based Application


- Spring 5 integration testing with JUnit 5
- Application context caching and the @DirtiesContext annotation
- Profile selection with @ActiveProfiles
- Easy test data setup with @Sql
Data Access and JDBC with Spring


- How Spring integrates with existing data access technologies
- DataAccessException hierarchy and @Repository
- Spring‘s JdbcTemplate and callback interfaces
Database Transactions with Spring


- Transactions overview
- Transaction management with Spring
- Transaction propagation and rollback rules
- Transactions and integration testing
Spring Boot Introduction


- Introduction to Spring Boot Features
- Value Proposition of Spring Boot
- Creating a simple Boot application using Spring Initializer website
Spring Boot Dependencies, Auto-configuration, and Runtime


- Dependency management using Spring Boot starters
- How auto-configuration works
- Configuration properties with Spring Boot
- Overriding auto-configuration
- Using CommandLineRunner and ApplicationRunner
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
Spring MVC Architecture and Overview


- Introduction to Spring MVC and request processing
- Controller method signatures
- Using @Controller, @RestController, @RequestMapping, @GetMapping, etc, annotations
- Configuring Spring MVC with Spring Boot
- Spring Boot packaging options, JAR or WAR
Rest with Spring MVC


- An introduction to the REST architectural style
- Controlling HTTP response codes with @ResponseStatus
- Implementing REST with Spring MVC, @RequestBody and @ResponseBody
- Spring MVC’s HttpMessageConverters and automatic content negotiation
- REST clients with RestTemplate, RestClient and WebClient: selection and implementation
Spring Boot Testing Enhancements and abstractions


- Spring Boot testing overview
- Integration testing using @SpringBootTest
- Web slice testing with MockMvc framework
- Slices to test different layers of the application
Spring Security


- What problems does Spring Security solve?
- Configuring authentication
- Implementing authorization by URL Matching
- Authorization at the Java method level
- Understanding the Spring Security filter chain
- Spring security testing
The Resource Server in OAuth 2.0


- Configuring and implementing a secure web-application with JSON Web Token-based authorization
Actuators, Metrics and Health Indicators


- Exposing and querying Spring Boot Actuator endpoints
- Custom Metrics
- Health Indicators
- Creating custom Health Indicators</outline_plain><duration unit="d" days="4">4 days</duration><pricelist><price country="DE" currency="EUR">3250.00</price><price country="AT" currency="EUR">3250.00</price><price country="SE" currency="EUR">3250.00</price><price country="SI" currency="EUR">3250.00</price><price country="CH" currency="CHF">3250.00</price></pricelist><miles/></course>