- Developing Middleware in Java EE 8
- Abdalla Mahmoud
- 196字
- 2021-07-23 19:24:34
Injection into the producer methods
In the previous example, we have instantiated our bean inside the producer method using the Java new keyword. This is useful, as mentioned earlier when we need to use plain Java objects as CDI beans. However, if we want to make use of great CDI features, such as dependency injection and interceptors, we need to return a real CDI bean. To do this, we will rewrite our producer method as follows:
@SessionScoped public class Preferences implements Serializable { ... @Produces @Preferred @RequestScoped public PaymentStrategy getPaymentStrategy(CreditCardPaymentStrategy ccps, CheckPaymentStrategy cps, PayPalPaymentStrategy ppps) { switch (paymentStrategy) { case CREDIT_CARD: return ccps; case CHECK: return cps; case PAYPAL: return ppps; default: return null; } } }
In this example, we have provided the producer method with three parameters of the three possible implementations of the PaymentStragey. Yes, this is dependency injection! The container will inject three instances of the different available payment strategies, and then you will return one of the user choices. The difference here is that the returned bean will be created using the container, rather than Java's new keyword, and hence, it will utilize all the great services provided to CDI beans.
- Mobile Web Performance Optimization
- Moodle Administration Essentials
- Learn to Create WordPress Themes by Building 5 Projects
- NLTK基礎教程:用NLTK和Python庫構建機器學習應用
- ASP.NET Core 2 and Vue.js
- Practical Windows Forensics
- 焊接機器人系統操作、編程與維護
- ASP.NET Core 2 Fundamentals
- PHP+Ajax+jQuery網站開發項目式教程
- Building Wireless Sensor Networks Using Arduino
- Webpack實戰:入門、進階與調優(第2版)
- 從零開始學Android開發
- Learning iOS Security
- Angular Design Patterns
- Laravel 5.x Cookbook