Определения DI Quarkus / CDI и "java config" - PullRequest
0 голосов
/ 24 октября 2019

Я только что начал доказательство концепции. Время запуска контейнеров просто потрясающее!

Сейчас я работаю над частью внедрения зависимостей. И выяснить варианты.

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

Мои предпочтения:

Я предпочитаю инжекцию конструктора. (Это идет нормально).

Я предпочитаю "java config", поэтому я могу следовать шаблону "Composition Root", чтобы поместить все свои инъекции зависимостей приложения в общее место. (См. https://blog.ploeh.dk/2011/07/28/CompositionRoot/)

В Spring DI это делается с помощью

org.springframework.context.annotation.Configuration

и объявляя Beans там.

Ака, я предпочитаю не размещать аннотации "@ApplicationScoped" во всех моих классах.

Поддерживает ли CDI / Quarkus модель "java config"? Причина, по которой я спрашиваю о quarkus, заключается в том, что я прочитал, что quarkus имеет ограниченную реализацию CDI.

// start quote // Наша основная цель заключалась в реализации решения DI, ориентированного на сверхзвуковую сборку, совместимого с CDI. Это позволит пользователям продолжать использовать CDI в своих приложениях, а также использовать возможности оптимизации Quarkus во время сборки. Однако ArC не является полной реализацией CDI, подтвержденной TCK - см. Также список поддерживаемых функций и список ограничений .// Конец цитаты

Так что мой вопрос не является исключительно вопросом CDI.

Я пробовал разные условия поиска в Интернете, но они продолжают показывать мне ссылки Spring. (

1 Ответ

1 голос
/ 24 октября 2019

Вы должны создать bean-компонент CDI, который будет производить ваши bean-компоненты, это стандартный подход CDI к тому, что Spring называет конфигурацией Java.

Так что-то вроде этого

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


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