Spring Boot云自动配置完成后,我需要延迟我的应用程序“服务”bean处理。如何延迟bean,直到所有弹簧云连接器扫描完成?
“服务”bean依赖于SQL DataSource
和其他Bean
(S3存储库),这是可选的,可以基于云服务配置或直接配置的属性(甚至根本不创建)创建。底层S3和SQL服务都是基于各种外部条件完美配置的。它们表现良好,具有直接的,不正确的属性,云等等。
所以现在我有类似...
@Autowired(required=false)
S3Storage s3;
@Autowired
SQLDatabase db;
@Bean
MyService myservice() {
if (s3 != null) {
return new SQLWithS3Implementation(db, s3);
} else {
return new SQLImplementation(db);
}
}
我有什么做这个Bean
所以它不是之前cloud
服务(spring-cloud-connectors
使用)与S3还没有空处理?
- 我不能让s3需要。它并不总是被配置。
- 我不能使用@Lazy。其他服务的参考...至少会是混乱的(如果可能的话)。
我需要这样的东西......
@ProcessAfter(CloudAutoConfiguration.class)
但实际上如何在Spring Boot
/Spring Cloud
这样做呢?
所以,你不能用'@DependsOn(“beanB”)'注解来做到这一点,对吧? – Andremoniy
是的,@DependsOn有问题,S3是可选的。而且我可以看到它在任何情况下都被检查得太早(属性还没有被云支持)。 –
'MyService myservice(S3Storage s3){...}'不适合你吗? – Andremoniy