После обновления Spring с 4.3.3 до 5.2.7 у меня возникла проблема с аннотацией @ scope ("prototype") метода с @Bean. на самом деле Spring пытается инициализировать bean-компонент при запуске, хотя я его нигде не использую (я пробовал удалить bean-компонент или переименовать его и перезапустить приложение, и все работает нормально но когда я добавляю его снова, у меня такое же исключение)
ИСКЛЮЧЕНИЕ
Related cause: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'MyBean' defined in com.test: Unsatisfied dependency expressed through method 'MyBean' parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.lang.String' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
PS: Я уверен, что не использую bean в любом месте при запуске Мне просто нужно, когда приложение уже запущено
УПРОЩЕННЫЙ КОД
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@SuppressWarnings({ "unchecked" })
public MyBean MyBean(String url,
String user, String password, String id) {
return MyBean(url, user, password, id,
new HashMap<String, String>(),false);
}
Я уже пробовал использовать Необязательный в качестве параметров и @ Nullable , и он не работает, потому что мне нужно проверить, присутствуют ли параметры, в противном случае я должен вернуть null, и это вызовет другую проблему весной
Bean instance of type [class org.springframework.beans.factory.support.NullBean] is not a FactoryBean
, и в моем случае мне не нужно редактировать тип параметров и тип возвращаемого компонента, иначе я могу вызвать регресс в существующем коде