Search⌘ K
AI Features

Learning Outcomes

Explore the fundamental learning outcomes of using Spring Boot to develop high-performance e-commerce applications. Understand key practices including web and data access, developer tools, testing strategies, messaging, OAuth security, and containerization. Gain insight into building a complete reactive app using modern Spring Boot features and ensuring code quality through various testing techniques.

Spring Boot is a Java-based open-source application framework that’s used to develop high-performance Java applications. This is a low-cost, secure, and flexible framework that minimizes most of the configurational work for the developer.

What we’ll learn in this course

Throughout this course, we’ll cover the following:

  • Web and Data access using Spring Boot.

  • Developer tools and test support provided in Spring Boot.

  • Operational features used in Spring Boot.

  • Docker container baking.

  • Bottleneck discovery with BlockHound.

  • Messaging in Spring Boot using APIs.

  • OAuth Security.

Course project

We’ll learn about Spring Boot, Spring Data, Testing, Messaging, RSocket, and Spring Security while creating an application for an e-commerce website. We’ll also learn to use the unit, container, and slice tests to ensure proper code functionality.

Below is the kind of application we’ll build in this course.

Click the “Run” button in the code widget below and check the “Output” tab for an example of the kind of application we’ll build in this course. You can also click the URL at the bottom of the code to view the application:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.5.6</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.greglturnquist</groupId>
	<artifactId>hackingspringboot</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>hackingspringboot</name>
	<description>Demo project for Hacking with Spring Boot</description>
	<properties>
		<java.version>11</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-webflux</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>io.projectreactor</groupId>
			<artifactId>reactor-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
  			<groupId>org.springframework.boot</groupId> 
  			<artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
		</dependency>
		<dependency>
  			<groupId>de.flapdoodle.embed</groupId>
  			<artifactId>de.flapdoodle.embed.mongo</artifactId> 
		</dependency>
		<dependency>
  			<groupId>org.mongodb</groupId> 
  			<artifactId>mongodb-driver-sync</artifactId>
		</dependency>
		<dependency> 
			<groupId>org.springframework.boot</groupId> 
			<artifactId>spring-boot-devtools</artifactId> 
			<scope>runtime</scope> 
			<optional>true</optional>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>com.fizzed</groupId>
				<artifactId>fizzed-watcher-maven-plugin</artifactId>
				<version>1.0.6</version>
				<configuration>
					<watches>
						<watch>
							<directory>src/main</directory>
							<exclude>*.css</exclude>
							<exclude>*.js</exclude>
							<exclude>*.svg</exclude>
						</watch>
					</watches>
					<goals>
						<goal>compile</goal>
						<goal>process-classes</goal>
					</goals>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>
Course application