我正在尝试使用 Spring Boot 将 Spring DI 改造到现有应用程序中。我想使用 JSR-330 注释而不是 Spring 的。我想将原型范围设为默认值,因此我不必在任何地方都使用非 JSR-330 范围 @Scope("prototype") 。我首先尝试使用以下方法安装 JSR330ScopeMetadataResolver:
SpringApplication application = new SpringApplication(OurApplication.class);
ConfigurableApplicationContext context = application.createContext();
context..setScopeMetadataResolver(new Jsr330ScopeMetadataResolver());
application.run(args);
注入没有注释的类时,我仍然得到一个单例。然后我尝试使用 ApplicationContextInitializer 来做同样的事情。无论哪种方式,我都会注入一个单例。在调试器中,我使用初始化程序验证了 Jsr330ScopeMetadataResolver 正在 ApplicationContext 中设置。在 Jsr330ScopeMetadataResolver 实例中,我看到默认构造函数中填充了一个映射,其中键/值作为单例。我显然错过了一些东西。有谁知道那是什么?