granadaCoder
granadaCoder

Reputation: 27852

Quarkus / CDI and "java config" DI definitions

I just started a quarkus proof of concept. The containers-start time is amazing!

Right now, I'm working on the Dependency Injection part. And figuring out the options.

https://quarkus.io/blog/quarkus-dependency-injection/

My preferences are:

I prefer constructor injection. (This has been going ok).

I prefer "java config" so I can follow the "Composition Root" pattern of putting all my application dependency injections in a common place. (See https://blog.ploeh.dk/2011/07/28/CompositionRoot/ )

With Spring DI, this is done with the

org.springframework.context.annotation.Configuration

and declaring the Beans there.

Aka, I prefer not to place "@ApplicationScoped" annotations all over my classes.

Does CDI/Quarkus support a "java config" model? The reason I ask about quarkus is that I read quarkus has a limited CDI implementation.

//start quote//Our primary goal was to implement a supersonic build-time oriented DI solution compatible with CDI. This would allow users to continue using CDI in their applications but also leverage Quarkus build-time optimizations. However, ArC is not a full CDI implementation verified by the TCK - see also the list of supported features and the list of limitations.//end quote

So my question isn't a solely CDI question.

I've tried different internet search terms, but they keep showing me Spring links. :(

Upvotes: 2

Views: 1949

Answers (1)

loicmathieu
loicmathieu

Reputation: 5562

You should create a CDI bean that will produce your beans, this is the standard CDI approach to what Spring calls Java Configuration.

So something like this

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;


@ApplicationScoped
public class MyConfiguration {
    @Produces
    public MyBean myBean(){
        return new MyBean();
    }
}

Upvotes: 1

Related Questions