我正在尝试将spring集成到一个独立的swing应用程序中。
swing应用程序在启动时要求提供登录详细信息,然后应使用该信息创建一个单例 DataSource
豆子。
但是,我无法想出一种方法将这些登录信息(作为java对象)传递给spring ApplicationContext
在初始化过程中(然后传递给 @Bean
生产者方法)。
有什么想法吗?
可能的解决方案:
@SpringBootApplication
public class DemoSwingApplication {
public static void main(final String[] args) {
...
final var loginInfo = buildLoginInfo();
try (final var context = new AnnotationConfigApplicationContext()) {
context.getBeanFactory().registerSingleton("loginInfo", loginInfo);
context.register(DemoSwingApplication.class);
context.refresh();
}
}
}
1条答案
按热度按时间zd287kbt1#
你可以用多种方法,
使用beandefinitionregistrypostprocessor-创建一个将实现
BeanDefinitionRegistryPostProcessor
然后储存BeanDefinitionRegistry
示例并动态注册bean。使用beanfactoryaware-这类似于您提供的实现,但通过实现
BeanFactoryAware
但这样做的缺点是BeanFactory
示例-然后在你的
UI
组件,注入这个And
并在配置属性可用时注册bean-并使用禁用的无头模式启动应用程序-