org.springframework.beans.BeanInstantiationException
является частым исключением при использовании внедрения зависимостей в среде Spring. Эта ошибка обычно возникает, когда Spring пытается создать экземпляр компонента и терпит неудачу по разным причинам. Эта ошибка возникает на этапе запуска приложения или при попытке получить экземпляр компонента. Вот простой сценарий и фрагмент кода:
@Component
public class MyService {
private final MyRepository myRepository;
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}
}
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyService();
}
}
В приведенном выше коде,когдаSpringпопытаться создатьMyService
пример,если Несоответствие параметров конструктораили другой Ошибка конфигурации,броситBeanInstantiationException
。
привести кorg.springframework.beans.BeanInstantiationException
Существует множество причин для сообщения об ошибке.,Вот некоторые распространенные из них:
Ниже приводится возможностьпривести кBeanInstantiationException
Примеры кодов ошибок для,И объясните, что здесь не так:
@Component
public class MyService {
private final MyRepository myRepository;
// Конструктор, которому требуется параметр MyRepository.
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}
}
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
// Ошибка: параметр MyRepository не был передан.
return new MyService();
}
}
Анализ ошибок:
AppConfig
в классе,myService
методпопытаться создатьMyService
пример,нет доставкиMyRepository
параметр,Заставляет Spring не найти подходящий конструктор,БросатьBeanInstantiationException
。Чтобы правильно решить эту проблему с ошибкой,мы должныубеждатьсясуществоватьсоздаватьMyService
примерпередачаправильный Конструкторпараметр。Ниже приведен правильный пример кода.:
@Component
public class MyService {
private final MyRepository myRepository;
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}
}
@Configuration
public class AppConfig {
@Bean
public MyService myService(MyRepository myRepository) {
// Передача параметров MyRepository
return new MyService(myRepository);
}
}
В этом примере,нассуществоватьAppConfig
в классепередача了MyRepository
параметр,Это гарантирует, что Spring сможет найти подходящий конструктор.,Успешное создание экземпляраMyService
。
При написании конфигурации Spring и определений компонентов необходимо обратить внимание на следующие моменты:
@Lazy
аннотациярешить。Следуя вышеуказанным шагам и мерам предосторожности,,можно эффективно решитьorg.springframework.beans.BeanInstantiationException
Отчеты об ошибках,Обеспечить нормальную работу приложений Spring.