Java 如果其他bean依赖它,如何忽略不存在的bean?

Java 如果其他bean依赖它,如何忽略不存在的bean?,java,spring,dependency-injection,inversion-of-control,Java,Spring,Dependency Injection,Inversion Of Control,我在应用程序中使用Flyway,它被配置为Springbean,它以init-method()的形式执行迁移。当然,迁移应该在任何应用程序与数据库交互之前执行。 这就是为什么我的数据源bean依赖于flywaybean。但是我使用@Profile有条件地创建Flywaybean,因为我不想在集成测试中使用同一应用程序的上下文来创建它 问题是,当我使用不创建Flyway bean的测试概要文件时,数据源实例化失败,出现NoSuchBeanDefinitionException,因为它依赖于不是使用

我在应用程序中使用Flyway,它被配置为Springbean,它以init-method()的形式执行迁移。当然,迁移应该在任何应用程序与数据库交互之前执行。 这就是为什么我的数据源bean依赖于flywaybean。但是我使用
@Profile
有条件地创建Flywaybean,因为我不想在集成测试中使用同一应用程序的上下文来创建它


问题是,当我使用不创建Flyway bean的测试概要文件时,数据源实例化失败,出现
NoSuchBeanDefinitionException
,因为它依赖于不是使用当前概要文件创建的=“Flyway”。如果相关的bean不存在,我能让spring忽略这个依赖关系吗?如果否,当我在测试概要文件下使用Flyway bean时,如何将其与上下文解耦?

您是否可以创建一个没有价值的sessionFactory bean取决于?@kuhajeyan这是可能的,但据我所知,这一技巧不允许应用程序在执行迁移时使用数据库,因为迁移需要花费太多时间。这就是为什么使用
依赖于