具有自动配置的自定义 Micronaut module/jar

Custom Micronaut module/jar with auto-configurations

无法找到如何使用自动配置编写自己的 modules/libs 的正确工作示例。
有人可以解释一下如何为 micronaut 应用程序编写正确的模块吗?

尝试加载 @Factory class 并添加 package-info.java@Configuration 注释,但这没有帮助。还像这样在 class 中添加适当的包进行扫描 Micronaut.build(args).packages("com.mypackage").start()

样本:

package com.mypackage;

    public class FooService {
      public void bar() {

      }
    }


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;

我从车把视图中学到了很多东西 renderer

对于 bean 中的配置,您需要:

  1. 为您的配置选项创建一个带有 getter 的接口。
  2. 创建它的实现。最后,在你的 bean 的构造函数中,
  3. 将配置界面添加为参数。

当 Micronaut 创建你的 bean 时,它会读取 application.yml 文件并在你的配置 impl class 中设置值。然后它将使用配置值作为参数构建您的 bean。

实际问题出在 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>