Book Image

Jakarta EE Application Development - Second Edition

By : David R. Heffelfinger
Book Image

Jakarta EE Application Development - Second Edition

By: David R. Heffelfinger

Overview of this book

Jakarta EE stands as a robust standard with multiple implementations, presenting developers with a versatile toolkit for building enterprise applications. However, despite the advantages of enterprise application development, vendor lock-in remains a concern for many developers, limiting flexibility and interoperability across diverse environments. This Jakarta EE application development guide addresses the challenge of vendor lock-in by offering comprehensive coverage of the major Jakarta EE APIs and goes beyond the basics to help you develop applications deployable on any Jakarta EE compliant runtime. This book introduces you to JSON Processing and JSON Binding and shows you how the Model API and the Streaming API are used to process JSON data. You’ll then explore additional Jakarta EE APIs, such as WebSocket and Messaging, for loosely coupled, asynchronous communication and discover ways to secure applications with the Jakarta EE Security API. Finally, you'll learn about Jakarta RESTful web service development and techniques to develop cloud-ready microservices in Jakarta EE. By the end of this book, you'll have developed the skills to craft secure, scalable, and cloud-native microservices that solve modern enterprise challenges.
Table of Contents (18 chapters)
15
Chapter 15: Putting it All Together

Qualifiers

In some instances, the type of bean we wish to inject into our code may be an interface or a Java superclass. However, we may be interested in injecting a specific subclass or a class implementing the interface. For cases like this, CDI provides qualifiers we can use to indicate the specific type we wish to inject into our code.

A CDI qualifier is an annotation that must be decorated with the @Qualifier annotation. This annotation can then be used to decorate the specific subclass or interface implementation we wish to qualify. Additionally, the injected field in the client code needs to be decorated with the qualifier as well.

Suppose our application could have a special kind of customer; for example, frequent customers could be given the status of premium customers. To handle these premium customers, we could extend our Customer named bean and decorate it with the following qualifier:

package package com.ensode.jakartaeebook.qualifiers;
import jakarta.inject.Qualifier...