
Spring in Action, Sixth Edition
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
In Spring in Action, 6th Edition you will learn:
Building reactive applications
Relational and NoSQL databases
Integrating via HTTP and REST-based services, and sand reactive RSocket services
Reactive programming techniques
Deploying applications to traditional servers and containers
Securing applications with Spring Security
Over the years, Spring in Action has helped tens of thousands of developers get a major productivity boost from Spring. This new edition of the classic bestseller covers all of the new features of Spring 5.3 and Spring Boot 2.4 along with examples of reactive programming, Spring Security for REST Services, and bringing reactivity to your databases. You'll also find the latest Spring best practices, including Spring Boot for application setup and configuration.
About the technology
Spring is required knowledge for Java developers! Why? Th is powerful framework eliminates a lot of the tedious configuration and repetitive coding tasks, making it easy to build enterprise-ready, production-quality software. The latest updates bring huge productivity boosts to microservices, reactive development, and other modern application designs. It's no wonder over half of all Java developers use Spring.
About the book
Spring in Action, Sixth Edition is a comprehensive guide to Spring's core features, all explained in Craig Walls' famously clear style. You'll put Spring into action as you build a complete database-backed web app step-by-step. This new edition covers both Spring fundamentals and new features such as reactive flows, Kubernetes integration, and RSocket. Whether you're new to Spring or leveling up to Spring 5.3, make this classic bestseller your bible!
What's inside
Relational and NoSQL databases
Integrating via RSocket and REST-based services
Reactive programming techniques
Deploying applications to traditional servers and containers
About the reader
For beginning to intermediate Java developers.
About the author
Craig Walls is an engineer at VMware, a member of the Spring engineering team, a popular author, and a frequent conference speaker.
Table of Contents
PART 1 FOUNDATIONAL SPRING
1 Getting started with Spring
2 Developing web applications
3 Working with data
4 Working with nonrelational data
5 Securing Spring
6 Working with configuration properties
PART 2 INTEGRATED SPRING
7 Creating REST services
8 Securing REST
9 Sending messages asynchronously
10 Integrating Spring
PART 3 REACTIVE SPRING
11 Introducing Reactor
12 Developing reactive APIs
13 Persisting data reactively
14 Working with RSocket
PART 4 DEPLOYED SPRING
15 Working with Spring Boot Actuator
16 Administering Spring
17 Monitoring Spring with JMX
18 Deploying Spring
More details
Other editions
Additional editions

Person
Content
- Intro
- Spring in Action
- Copyright
- From the fifth edition of Spring in Action by Craig Walls
- brief contents
- contents
- front matter
- preface
- acknowledgments
- about this book
- Who should read this book
- How this book is organized: A roadmap
- About the code
- Book forum
- Other online resources
- about the author
- about the cover illustration
- Part 1. Foundational Spring
- 1 Getting started with Spring
- 1.1 What is Spring?
- 1.2 Initializing a Spring application
- 1.2.1 Initializing a Spring project with Spring Tool Suite
- 1.2.2 Examining the Spring project structure
- 1.3 Writing a Spring application
- 1.3.1 Handling web requests
- 1.3.2 Defining the view
- 1.3.3 Testing the controller
- 1.3.4 Building and running the application
- 1.3.5 Getting to know Spring Boot DevTools
- 1.3.6 Let's review
- 1.4 Surveying the Spring landscape
- 1.4.1 The core Spring Framework
- 1.4.2 Spring Boot
- 1.4.3 Spring Data
- 1.4.4 Spring Security
- 1.4.5 Spring Integration and Spring Batch
- 1.4.6 Spring Cloud
- 1.4.7 Spring Native
- Summary
- 2 Developing web applications
- 2.1 Displaying information
- 2.1.1 Establishing the domain
- 2.1.2 Creating a controller class
- 2.1.3 Designing the view
- 2.2 Processing form submission
- 2.3 Validating form input
- 2.3.1 Declaring validation rules
- 2.3.2 Performing validation at form binding
- 2.3.3 Displaying validation errors
- 2.4 Working with view controllers
- 2.5 Choosing a view template library
- 2.5.1 Caching templates
- Summary
- 3 Working with data
- 3.1 Reading and writing data with JDBC
- 3.1.1 Adapting the domain for persistence
- 3.1.2 Working with JdbcTemplate
- 3.1.3 Defining a schema and preloading data
- 3.1.4 Inserting data
- 3.2 Working with Spring Data JDBC
- 3.2.1 Adding Spring Data JDBC to the build
- 3.2.2 Defining repository interfaces
- 3.2.3 Annotating the domain for persistence
- 3.2.4 Preloading data with CommandLineRunner
- 3.3 Persisting data with Spring Data JPA
- 3.3.1 Adding Spring Data JPA to the project
- 3.3.2 Annotating the domain as entities
- 3.3.3 Declaring JPA repositories
- 3.3.4 Customizing repositories
- Summary
- 4 Working with nonrelational data
- 4.1 Working with Cassandra repositories
- 4.1.1 Enabling Spring Data Cassandra
- 4.1.2 Understanding Cassandra data modeling
- 4.1.3 Mapping domain types for Cassandra persistence
- 4.1.4 Writing Cassandra repositories
- 4.2 Writing MongoDB repositories
- 4.2.1 Enabling Spring Data MongoDB
- 4.2.2 Mapping domain types to documents
- 4.2.3 Writing MongoDB repository interfaces
- Summary
- 5 Securing Spring
- 5.1 Enabling Spring Security
- 5.2 Configuring authentication
- 5.2.1 In-memory user details service
- 5.2.2 Customizing user authentication
- 5.3 Securing web requests
- 5.3.1 Securing requests
- 5.3.2 Creating a custom login page
- 5.3.3 Enabling third-party authentication
- 5.3.4 Preventing cross-site request forgery
- 5.4 Applying method-level security
- 5.5 Knowing your user
- Summary
- 6 Working with configuration properties
- 6.1 Fine-tuning autoconfiguration
- 6.1.1 Understanding Spring's environment abstraction
- 6.1.2 Configuring a data source
- 6.1.3 Configuring the embedded server
- 6.1.4 Configuring logging
- 6.1.5 Using special property values
- 6.2 Creating your own configuration properties
- 6.2.1 Defining configuration property holders
- 6.2.2 Declaring configuration property metadata
- 6.3 Configuring with profiles
- 6.3.1 Defining profile-specific properties
- 6.3.2 Activating profiles
- 6.3.3 Conditionally creating beans with profiles
- Summary
- Part 2. Integrated Spring
- 7 Creating REST services
- 7.1 Writing RESTful controllers
- 7.1.1 Retrieving data from the server
- 7.1.2 Sending data to the server
- 7.1.3 Updating data on the server
- 7.1.4 Deleting data from the server
- 7.2 Enabling data-backed services
- 7.2.1 Adjusting resource paths and relation names
- 7.2.2 Paging and sorting
- 7.3 Consuming REST services
- 7.3.1 GETting resources
- 7.3.2 PUTting resources
- 7.3.3 DELETEing resources
- 7.3.4 POSTing resource data
- Summary
- 8 Securing REST
- 8.1 Introducing OAuth 2
- 8.2 Creating an authorization server
- 8.3 Securing an API with a resource server
- 8.4 Developing the client
- Summary
- 9 Sending messages asynchronously
- 9.1 Sending messages with JMS
- 9.1.1 Setting up JMS
- 9.1.2 Sending messages with JmsTemplate
- 9.1.3 Receiving JMS messages
- 9.2 Working with RabbitMQ and AMQP
- 9.2.1 Adding RabbitMQ to Spring
- 9.2.2 Sending messages with RabbitTemplate
- 9.2.3 Receiving messages from RabbitMQ
- 9.3 Messaging with Kafka
- 9.3.1 Setting up Spring for Kafka messaging
- 9.3.2 Sending messages with KafkaTemplate
- 9.3.3 Writing Kafka listeners
- Summary
- 10 Integrating Spring
- 10.1 Declaring a simple integration flow
- 10.1.1 Defining integration flows with XML
- 10.1.2 Configuring integration flows in Java
- 10.1.3 Using Spring Integration's DSL configuration
- 10.2 Surveying the Spring Integration landscape
- 10.2.1 Message channels
- 10.2.2 Filters
- 10.2.3 Transformers
- 10.2.4 Routers
- 10.2.5 Splitters
- 10.2.6 Service activators
- 10.2.7 Gateways
- 10.2.8 Channel adapters
- 10.2.9 Endpoint modules
- 10.3 Creating an email integration flow
- Summary
- Part 3. Reactive Spring
- 11 Introducing Reactor
- 11.1 Understanding reactive programming
- 11.1.1 Defining Reactive Streams
- 11.2 Getting started with Reactor
- 11.2.1 Diagramming reactive flows
- 11.2.2 Adding Reactor dependencies
- 11.3 Applying common reactive operations
- 11.3.1 Creating reactive types
- 11.3.2 Combining reactive types
- 11.3.3 Transforming and filtering reactive streams
- 11.3.4 Performing logic operations on reactive types
- Summary
- 12 Developing reactive APIs
- 12.1 Working with Spring WebFlux
- 12.1.1 Introducing Spring WebFlux
- 12.1.2 Writing reactive controllers
- 12.2 Defining functional request handlers
- 12.3 Testing reactive controllers
- 12.3.1 Testing GET requests
- 12.3.2 Testing POST requests
- 12.3.3 Testing with a live server
- 12.4 Consuming REST APIs reactively
- 12.4.1 GETting resources
- 12.4.2 Sending resources
- 12.4.3 Deleting resources
- 12.4.4 Handling errors
- 12.4.5 Exchanging requests
- 12.5 Securing reactive web APIs
- 12.5.1 Configuring reactive web security
- 12.5.2 Configuring a reactive user details service
- Summary
- 13 Persisting data reactively
- 13.1 Working with R2DBC
- 13.1.1 Defining domain entities for R2DBC
- 13.1.2 Defining reactive repositories
- 13.1.3 Testing R2DBC repositories
- 13.1.4 Defining an OrderRepository aggregate root service
- 13.2 Persisting document data reactively with MongoDB
- 13.2.1 Defining domain document types
- 13.2.2 Defining reactive MongoDB repositories
- 13.2.3 Testing reactive MongoDB repositories
- 13.3 Reactively persisting data in Cassandra
- 13.3.1 Defining domain classes for Cassandra persistence
- 13.3.2 Creating reactive Cassandra repositories
- 13.3.3 Testing reactive Cassandra repositories
- Summary
- 14 Working with RSocket
- 14.1 Introducing RSocket
- 14.2 Creating a simple RSocket server and client
- 14.2.1 Working with request-response
- 14.2.2 Handling request-stream messaging
- 14.2.3 Sending fire-and-forget messages
- 14.2.4 Sending messages bidirectionally
- 14.3 Transporting RSocket over WebSocket
- Summary
- Part 4. Deployed Spring
- 15 Working with Spring Boot Actuator
- 15.1 Introducing Actuator
- 15.1.1 Configuring Actuator's base path
- 15.1.2 Enabling and disabling Actuator endpoints
- 15.2 Consuming Actuator endpoints
- 15.2.1 Fetching essential application information
- 15.2.2 Viewing configuration details
- 15.2.3 Viewing application activity
- 15.2.4 Tapping runtime metrics
- 15.3 Customizing Actuator
- 15.3.1 Contributing information to the /info endpoint
- 15.3.2 Defining custom health indicators
- 15.3.3 Registering custom metrics
- 15.3.4 Creating custom endpoints
- 15.4 Securing Actuator
- Summary
- 16 Administering Spring
- 16.1 Using Spring Boot Admin
- 16.1.1 Creating an Admin server
- 16.1.2 Registering Admin clients
- 16.2 Exploring the Admin server
- 16.2.1 Viewing general application health and information
- 16.2.2 Watching key metrics
- 16.2.3 Examining environment properties
- 16.2.4 Viewing and setting logging levels
- 16.3 Securing the Admin server
- 16.3.1 Enabling login in the Admin server
- 16.3.2 Authenticating with the Actuator
- Summary
- 17 Monitoring Spring with JMX
- 17.1 Working with Actuator MBeans
- 17.2 Creating your own MBeans
- 17.3 Sending notifications
- Summary
- 18 Deploying Spring
- 18.1 Weighing deployment options
- 18.2 Building executable JAR files
- 18.3 Building container images
- 18.3.1 Deploying to Kubernetes
- 18.3.2 Enabling graceful shutdown
- 18.3.3 Working with application liveness and readiness
- 18.4 Building and deploying WAR files
- 18.5 The end is where we begin
- Summary
- Appendix. Bootstrapping Spring applications
- A.1 Initializing a project with Spring Tool Suite
- A.2 Initializing a project with IntelliJ IDEA
- A.3 Initializing a project with NetBeans
- A.4 Initializing a project at start.spring.io
- A.5 Initializing a project from the command line
- curl and the Initializr API
- Spring Boot command-line interface
- A.6 Building and running projects
- index
System requirements
File format: ePUB
Copy protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (not Kindle).
The file format ePub works well for novels and non-fiction books – i.e., „flowing” text without complex layout. On an e-reader or smartphone, line and page breaks automatically adjust to fit the small displays.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our ebook Help page.