猿问

在Spring启动应用程序中共享类的实例

我有一个特定的类用于与需要初始化的服务进行交互。在应用程序生命周期中,唯一有意义的地方是应用程序的开始,因为没有它,Spring应用程序的其余部分无法运行。我有这个想法:

@SpringBootApplicationpublic class MyApplication {
    public static void main(String[] args) {
        try {
            MyRequiredService mrs = new MyRequiredService();
            mrs.connect(); // This will throw if it fails
            run(MyApplication.class, args);
        } catch(MyException e) {
            System.out.println("Failed to connect to MyRequiredService!");
        }
    }}

这将启动服务并尝试连接,但我有一个大问题。如何在应用程序中传递此类?我需要它在我写的服务端点中的功能。

我没有看到任何明显的东西,并且搜索“在Spring启动应用程序中传递类实例”会出现一堆无关的主题。

春季靴子是否有一种聪明,干净的方式来做到这一点?我为一个人为的例子道歉。服务的名称是唯一的,我不想违反任何协议。


翻阅古今
浏览 527回答 3
3回答

开心每一天1111

一个类实现BeanFactoryPostProcessor,它在普通bean之前是init@Configurationpublic class MyRequiredService implements BeanFactoryPostProcessor, PriorityOrdered, InitializingBean {@Overridepublic int getOrder() {    return Integer.MIN_VALUE;}public void connect() {    // ...}@Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {}@Overridepublic void afterPropertiesSet() throws Exception {        connect();}}
随时随地看视频慕课网APP

相关分类

Java
我要回答