【发布时间】:2021-02-08 10:32:36
【问题描述】:
我有一个案例,我有一个 @Factory 带注释的类,它创建一个 bean 并调用一些代码。我启用了急切的单例初始化和
即使在应用程序启动时没有在任何地方使用 bean 工厂方法,它也会被调用。但是对于测试,急切的初始化不起作用并且没有创建 bean:
应用:
public class Application {
public static void main(String[] args) {
Micronaut.build(args)
.eagerInitSingletons(true)
.mainClass(Application.class)
.start();
}
}
配置
@Factory
public class Config {
@Singleton
@Bean
public Response response() {
System.out.println("Invoked");
//invoking some code
return new Response("test");
}
}
和测试:
@MicronautTest(application = Application.class)
class ApplicationSpec extends Specification {
@Inject
EmbeddedApplication<?> application
void 'test it works'() {
expect:
application.running
}
}
所以在执行测试时,即使启用了eagerInitSingletons,也不会调用来自Config 类的response 方法,并且它在应用程序正常启动时起作用。
问题是:如何为 micronaut 测试启用急切的单例初始化?
【问题讨论】: