Craig Walls

Author of Spring in Action

Craig Walls is a senior engineer with Pivotal as the Spring Social project lead and is the author of Spring in Action and Spring Boot in Action. He's a zealous promoter of the Spring Framework, speaking frequently at local user groups and conferences and writing about Spring. When he's not slinging code, Craig is planning his next trip to Disney World or Disneyland and spending as much time as he can with his wife, two daughters, 2 birds and 3 dogs.

Presentations

Cloud Native Spring: Discovery and Configuration - Video Preview

In this sessions we'll see how to use components of Spring Cloud to configure and discover microservices in a cloud native microservice-architected application. Specifically, we'll look at Spring Cloud Netflix and Netflix' Eureka and Ribbon projects for service discovery as well as the Spring Cloud Config project's configuration server to provide a central point of external configuration.

Microservice-architecture presents many benefits, not the least of which include opportunities to develop, evolve, scale, test, and deploy individual modules of an application independently from the rest of the application. But once an application is broken apart, a new set of challenges arises.

If the individual microservices are to work together in service of the greater application, then they must know about each other. Rather than hardcode the specifics of each microservice within every other microservice, it's better to provide a registry with which a service can register and other services may use to lookup those service details.

Microservices, like any application, will also likely depend on application-level configuration. It's generally a good idea to keep that configuration separate from the application itself, and this is even more true with microservices. Using a centralized configuration service, microservices can obtain their configuration details, some of which may be shared across many microservices. Because it is separate from the application/microservice code, that configuration itself can be versioned and evolve at a pace independent of the microservices it serves.

Cloud Native Spring: Tracing and Health - Video Preview

In this session, we'll look at how to monitor the health of individual services in a microservice-architected application as well as trace the path of data and processing as it flows from service to service. Specifically, we'll look at Spring Cloud Netflix and Netflix OSS' Hystrix project to not only apply the circuit breaker pattern for failure and latency protection to microservices and monitor the health of those circuit breakers in a running application. Additionally, we'll look at Spring Cloud Sleuth and Zipkin to trace processing through a microservice-based application.

Microservice-architecture presents many benefits, not the least of which include opportunities to develop, evolve, scale, test, and deploy individual modules of an application independently from the rest of the application. But once an application is broken apart, a new set of challenges arises.

Failure is always a possibility in any application. But when an application is composed of microservices, it's important for that each service contain its failure and keep its problems to itself to avoid cascading errors to other services. Likewise, latency can be a concern that is compounded when felt across multiple microservices and it's important to avoid cascading latency issues. By applying the circuit breaker pattern in your microservices, you can ensure that if anything goes wrong in a given service, it stays in that service and doesn't have any negative impacts to other services. Moreover, metrics published by those circuit breakers can provide helpful insight into the health of an application.

When things do go wrong, it may also be helpful to trace the flow and processing of information as it passes from one microservice to another. Traditionally, tracing involves following the logs of a single application. But in a microservice-based application where many services and many instances of those services are involved, tracing is much more challenging. What's needed is a way for microservices to submit timing and tracing information to a central tracing service that coordinates that data and can present the flow of data in a single, easily digested view.

Cloud Native Spring: Streams and Tasks - Video Preview

In this session, we'll see how to develop microservices that are components of a flow of data, but that do not necessarily involve REST. We'll also see how to develop ephemeral microservices–microservice that are triggered to perform a job, then shutdown when that job is complete. Specifically, we'll look at Spring Cloud Stream for flow-based microservices, Spring Cloud Task for ephemeral microservices, and Spring Cloud Data Flow which orchestrates those stream- and task-based services.

Microservice-architecture presents many benefits, not the least of which include opportunities to develop, evolve, scale, test, and deploy individual modules of an application independently from the rest of the application. But once an application is broken apart, a new set of challenges arises.

Microservices are commonly thought of as small REST-based services that are assembled to form a larger, more complete application. In reality, however, REST is only the communication mechanism which is only a implementation detail and not intrinsic to the notion of microservices. Meanwhile, data processing and integration between various components of an application and external services is a key factor of many applications. In cloud native applications, this kind of data flow and processing is still relevant.

Reactive Spring - Video Preview

In this session, we'll explore the new reactive features in Spring 5 to build reactive, non-blocking applications using Spring's familiar programming model.

Traditionally, applications have been built using a blocking, synchronous model. Although comfortable and intuitive for most programmers, this model doesn't scale well. And although there are several new approaches to reactive programming, they don't necessarily fit into the familiar programming model that Spring developers are accustomed to working with.

Spring 5 has introduced a set of new reactive features, enabling non-blocking, asynchronous code that scales well using minimal threads. Moreover, it builds on the same concepts and programming models that Spring developers have used for years.

Essential Spring Boot - Video Preview

In this session, you'll learn how to streamline your Spring development utilizing the four essential features of Spring Boot: auto-configuration, starter dependencies, the Actuator, and the Spring Boot CLI.

TBD

Extreme Spring Boot - Video Preview

In this session, you'll learn how to take your Spring Boot skills to the next level, applying the latest features of Spring Boot. Topics may include Spring Boot DevTools, configuration properties and profiles, customizing the Actuator, and crafting your own starters and auto-configuration.

TBD

Essential Spring Data - Video Preview

In this session, you'll learn how to use Spring Data to rapidly develop repositories for a variety of database types, including relational (JPA), document (Mongo), graph (Neo4j), and others (Redis, Cassandra, CouchBase, etc).

TBD

Extreme Spring Data - Video Preview

In this session, you'll see how to take Spring Data's automatic repository generation to a whole new level. We'll look at ways to model data and manipulate Spring Data to produce repositories and APIs that are more than just CRUD layers on top of a database.

TBD

Essential Spring Security - Video Preview

In this session, you'll learn how to take advantage of the latest features of Spring Security and Spring Boot to secure an application, both at the web layer and at the method-level.

TBD

Extreme Spring Testing - Video Preview

In this session, we'll look at various ways that the latest features of Spring and Spring Boot can help with testing the tough-to-test portions of an application.

TBD

Serverless Spring: Spring Function as a Service - Video Preview

Serverless is a big topic these days. More specifically, Function as a Service (FaaS) enables small-scale functions deployed in the cloud to be enabled only as needed. Compared to Platform as a Service (PaaS) services which are “always on” and require explicit scaling, FaaS services wake up when needed and are scaled by the platform automatically.

Imagine a service that only gets invoked one per hour. In PaaS, that service is always running and ready to handle requests, consuming processor resources and ultimately costing more to be ready at a moment's notice. In contrast, FaaS services awaken quickly upon invocation and go away when finished, conserving resources and cost.

In this example-driven session, we'll see how to create and deploy Function as a Service (FaaS) services with Spring and Spring Boot.

Spring Skills: Building voice applications with Spring and Alexa - Video Preview

As a software developer, you've likely come across at least one veteran in our field who has shared tales of the old days when they used punch cards to give instructions to a computer. Thankfully, those days are long gone. Over time, the way we interact with machines has evolved through various stages such as textual, graphical, and touch/gestural user interfaces…up to today where Siri, Alexa, and Google Home are ushering in a new era of voice user interfaces.

In this session, we'll focus on Alexa, the voice assistant present in Amazon's line of Echo devices. We'll explore the Alexa Skills Kit (ASK) and see how to construct voice UIs (known as “skills”) to do our bidding. We'll see how to back those skills using Spring, including Spring MVC and Spring Cloud Function. And maybe, one day, we'll tell future generations about how we once had to actually touch computers.

Pocket-Sized Angular - Video Preview

There are many ways to develop mobile applications. You can build them using native languages and tooling, but then you must develop them twice, once for iOS and then again for Android. Or you could just build it as a responsive web application that is styled for mobile use…but then you lose access to native services such as the camera or accelerometer. In the middle you have Apache Cordova (aka, PhoneGap) which wraps a web UI with a native application, but then it gets tricky to present the application in an idiomatic way on the various mobile devices that run the app.

NativeScript offers another option. With NativeScript, you can develop truly mobile applications with TypeScript and Angular that have access to native services, have UIs that match the device that they're running on, and that only must be developed once to run on multiple mobile platforms.

In this session, we'll explore NativeScript with Angular and TypeScript to see how to create a native mobile application that runs on either iOS or Android.

Books

Spring Boot in Action

by Craig Walls

  • Summary

    A developer-focused guide to writing applications using Spring Boot. You'll learn how to bypass the tedious configuration steps so that you can concentrate on your application's behavior.

    Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.

    About the Technology

    The Spring Framework simplifies enterprise Java development, but it does require lots of tedious configuration work. Spring Boot radically streamlines spinning up a Spring application. You get automatic configuration and a model with established conventions for build-time and runtime dependencies. You also get a handy command-line interface you can use to write scripts in Groovy. Developers who use Spring Boot often say that they can't imagine going back to hand configuring their applications.

    About the Book

    Spring Boot in Action is a developer-focused guide to writing applications using Spring Boot. In it, you'll learn how to bypass configuration steps so you can focus on your application's behavior. Spring expert Craig Walls uses interesting and practical examples to teach you both how to use the default settings effectively and how to override and customize Spring Boot for your unique environment. Along the way, you'll pick up insights from Craig's years of Spring development experience.

    What's Inside

    • Develop Spring apps more efficiently
    • Minimal to no configuration
    • Runtime metrics with the Actuator
    • Covers Spring Boot 1.3

    About the Reader

    Written for readers familiar with the Spring Framework.

    About the Author

    Craig Walls is a software developer, author of the popular book Spring in Action, Fourth Edition, and a frequent speaker at conferences.

    Table of Contents

    1. Bootstarting Spring
    2. Developing your first Spring Boot application
    3. Customizing configuration
    4. Testing with Spring Boot
    5. Getting Groovy with the Spring Boot CLI
    6. Applying Grails in Spring Boot
    7. Taking a peek inside with the Actuator
    8. Deploying Spring Boot applications
    9. APPENDIXES
    1. Spring Boot developer tools
    2. Spring Boot starters
    3. Configuration properties
    4. Spring Boot dependencies

Spring in Action

by Craig Walls

  • Summary

    Spring in Action, Fourth Edition is a hands-on guide to the Spring Framework, updated for version 4. It covers the latest features, tools, and practices including Spring MVC, REST, Security, Web Flow, and more. You'll move between short snippets and an ongoing example as you learn to build simple and efficient J2EE applications. Author Craig Walls has a special knack for crisp and entertaining examples that zoom in on the features and techniques you really need.

    Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.

    About the Technology

    Designed in 2003 as a lighter approach to J2EE development, Spring Framework has since become a standard choice for building enterprise applications and required knowledge for Java developers. Spring 4, the latest major version, provides full Java 8 integration along with key upgrades like new annotations for the IoC container, improvements to Spring Expression Language, and much-needed support for REST. Whether you're just discovering Spring or you want to absorb the new features, there's no better way to master Spring than with this book.

    About the Book

    Spring in Action, Fourth Edition is a hands-on guide to the Spring Framework. It covers Spring core, along with the latest updates to Spring MVC, Security, Web Flow, and more. You'll move between short snippets and an ongoing example as you learn to build simple and efficient JEE applications. Author Craig Walls has a special knack for crisp and entertaining examples that zoom in on the features and techniques you really need.

    Nearly 100,000 developers have used this book to learn Spring! It requires a working knowledge of Java.

    What's Inside

    • Updated for Spring 4
    • Spring Data for NoSQL
    • Simplifying configuration with annotations and definition profiles
    • Working with RESTful resources

    About the Author

    Craig Walls is a software developer at Pivotal. He's a popular author and a frequent speaker at user groups and conferences. Craig lives in Cross Roads, Texas.

    Table of Contents

      PART 1 CORE SPRING
    1. Springing into action
    2. Wiring beans
    3. Advanced wiring
    4. Aspect-oriented Spring
      PART 2 SPRING ON THE WEB
    5. Building Spring web applications
    6. Rendering web views
    7. Advanced Spring MVC
    8. Working with Spring Web Flow
    9. Securing web applications
      PART 3 SPRING IN THE BACKEND
    10. Hitting the database with Spring and JDBC
    11. Persisting data with object-relational mapping
    12. Working with NoSQL databases
    13. Caching data
    14. Securing methods
    15. PART 4 INTEGRATING SPRING
    16. Working with remote services
    17. Creating REST APIs with Spring MVC
    18. Messaging in Spring
    19. Messaging with WebSocket and STOMP
    20. Sending email with Spring
    21. Managing Spring beans with JMX
    22. Simplifying Spring development with Spring Boot