Пользовательский модуль / банка Micronaut с автоконфигурациями - PullRequest
0 голосов
/ 12 ноября 2018

Не могу найти подходящий рабочий пример, как писать собственные модули / библиотеки с автоконфигурацией.
Может кто-нибудь объяснить, как написать правильные модули для приложения micronaut?

Пытался загрузить класс @Factory и добавить package-info.java с аннотацией @Configuration, но это не помогло. Также добавлял правильный пакет для сканирования в основной класс, как это Micronaut.build(args).packages("com.mypackage").start()

Пример:

package com.mypackage;

    public class FooService {
      public void bar() {

      }
    }

1010 *
*

package com.mypackage;

import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.Factory;
import javax.inject.Singleton;

@Factory
public class FooFactory {

    @Bean
    @Singleton
    public FooService fooService() {
        return new FooService();
    }
}


//com.mypackage.package-info.java
@Configuration
package com.mypackage;

import io.micronaut.context.annotation.Configuration;

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Фактическая проблема была в Maven.
Процессор аннотаций Micronaut не был вызван maven-compiler-plugin.

Решением было настроить процессоры аннотаций в maven-compile-plugin:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <source>${maven-compiler-plugin.source}</source>
                <target>${maven-compiler-plugin.target}</target>
                <encoding>${maven-compiler-plugin.encoding}</encoding>
                <annotationProcessorPaths>
                    <!-- uncomment if you are using lombok -->
                    <!-- path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>${lombok.version}</version>
                    </path -->
                    <path>
                        <groupId>io.micronaut</groupId>
                        <artifactId>micronaut-inject-java</artifactId>
                        <version>${micronaut.version}</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
0 голосов
/ 13 ноября 2018

Я многому научился, глядя на вид руля renderer .

Для конфигурации в вашем bean-компоненте вам необходимо:

  1. Создать интерфейс с геттерами для ваших параметров конфигурации.
  2. Создать его реализацию.Наконец, в конструкторе вашего бина
  3. Добавьте интерфейс конфигурации в качестве аргумента.

Когда Micronaut создает ваш бин, он будет читать файл application.yml и установите значения в вашей конфигурации impl class.Затем он соберет ваш бин со значением config в качестве аргумента.

...