当前位置: 首页 > 知识库问答 >
问题:

延迟Spring中的依赖注入

艾和通
2023-03-14

我正在编写一个应用程序,该应用程序与一个数据库通信,获取其他数据库的凭据,并连接到其他数据库。它使用在运行时构造的数据源和实体管理器工厂来执行此操作。

如果我想使用Spring Data Repositories,我想我需要自动连接它们,因此它们必须是Spring Beans。

如果在对第一个数据库运行查询之前没有构造的DataSource,我如何使用Spring Data?

共有1个答案

甄鹏云
2023-03-14

我相信有条件bean创建就是您的答案。查看此处。

还有,你要在确定条件满足之后才能拿到豆子。检查这里。

@Component
public class RuntimeBeanBuilder {

    @Autowired
    private ApplicationContext applicationContext;

    public MyObject load(String beanName, MyObject myObject) {
        ConfigurableApplicationContext configContext = (ConfigurableApplicationContext) applicationContext;
        SingletonBeanRegistry beanRegistry = configContext.getBeanFactory();

        if (beanRegistry.containsSingleton(beanName)) {
            return beanRegistry.getSingleton(beanName);
        } else {
            beanRegistry.registerSingleton(beanName, myObject);

            return beanRegistry.getSingleton(beanName);
        }
    }
}


@Service
public MyService{

   //inject your builder and create or load beans
   @Autowired
   private RuntimeBeanBuilder builder;

   //do something
}

因此,为SpringDataRepository定义一个bean,并将其条件设置为在获取其他数据库凭据时满足。然后,在服务中使用RuntimeBeanBuilder重新加载bean将获得bean,因为现在它的条件已满足。

 类似资料:
  • 为了显示这种行为,让我们继续上一节的示例,并向我们的添加一个CounterService。 app/lazy/lazy.module.ts 这里我们将添加到providers数组中。 我们的是一个简单的类,它保存对计数器属性的引用。 我们可以修改LazyComponent来使用这个服务,使用一个按钮来增加计数器属性。 app/lazy/lazy.component.ts 但问题是,我们如何验证服务

  • 我需要在Hibernate生成所有模式表之后执行Flyway迁移。在迁移到Spring Boot 2.2之前,这段代码运行良好 不幸的是,在迁移到Spring Boot 2.2.0之后,我收到了一个与循环依赖相关的异常 以下是日志: 应用程序上下文中某些bean的依赖关系形成一个循环: ┌─────┐ | 在类路径资源[com/myFleetSolutions/myFleet/organizati

  • 谢谢你。 更新:我找到了另一个解决方案,并在另一个帖子中发布了答案:https://stackoverflow.com/a/52021965/2580829

  • 我有一个正在使用jar的项目a,比如(其中B是在项目a中用作依赖项的另一个项目),现在有一个(类似于缓存),它在映射中保存所需的所有数据。这个映射bean被project(在我的项目中作为包含)使用,即B来读取缓存属性,但我无法这样做,有什么帮助吗? 项目B的webapp-config.xml 上面的bean b2必须在外部项目B中使用(作为jar包含在我的项目A中)。 但我得到了 任何帮助都将不

  • 我正在使用Spring框架中的@计划的注释来调用一个方法。但是我的设置中有多个节点,我不希望它们完全同时运行。所以我想给初始延迟设置一个随机值来抵消它们。 不幸的是,这里只允许我使用常量表达式。还有别的办法吗?我想到了使用Spring表达式语言。

  • 我遇到了依赖注入周期问题。我请求重新设计建议。提前谢谢。 错误描述:应用程序上下文中某些bean的依赖关系形成一个循环: 这是两个班 第一类: 第二类: