【问题标题】:Custom Micronaut module/jar with auto-configurations具有自动配置的自定义 Micronaut 模块/jar
【发布时间】:2018-11-12 12:07:15
【问题描述】:

找不到合适的工作示例,如何使用自动配置编写自己的模块/库。
有人可以解释如何为 micronaut 应用程序编写适当的模块吗?

尝试加载 @Factory 类并添加 package-info.java@Configuration 注释,但这没有帮助。还在像这样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;

【问题讨论】:

    标签: maven dependency-injection java-8 micronaut


    【解决方案1】:

    实际问题出在 Maven 中。
    maven-compiler-plugin 未触发 Micronaut 注释处理器。

    解决方案是在 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>
    

    【讨论】:

      【解决方案2】:

      通过查看车把视图renderer,我学到了很多东西。

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

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

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

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-10
        • 2011-08-29
        • 2019-04-18
        相关资源
        最近更新 更多