未分類

【Spring Boot】BeanCreationExceptionの対処法

【Spring Boot】BeanCreationExceptionの対処法

要約

  • エラーの概要: SpringがBeanを生成しようとする時点で、依存関係の不備やコンストラクタの例外発生などにより失敗する。
  • 主な原因:
    • 依存するBeanが存在しない (NoSuchBeanDefinitionException などを内包)
    • 初期化メソッド (@PostConstruct) 内で例外が発生
  • 修正方法のポイント:
    • スタックトレースの最後を見て、どのBean生成が失敗しているか特定 → アノテーションや依存設定を見直す

エラー例

@Service
public class StartupService {

    @Autowired
    private NonExistentBean nonExistentBean;

    @PostConstruct
    public void init() {
        nonExistentBean.run(); 
    }
}
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'startupService' ...
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type 'com.example.NonExistentBean' available

修正例

// 修正: 依存するBeanを実在するクラスに変更、またはBean定義を追加
@Service
public class StartupService {

    @Autowired
    private CorrectBean correctBean;

    @PostConstruct
    public void init() {
        correctBean.run();
    }
}

@Service
public class CorrectBean {
    public void run() {
        // ここでの処理
    }
}

詳細

なぜそうなるのか?

  • Springはアプリ起動時(もしくは必要に応じて)Beanを生成し、依存関係を注入していきます。その過程で、存在しないBeanを注入しようとしたり、コンストラクタや@PostConstructで例外が発生したりすると生成に失敗し、BeanCreationException が投げられます。

仕組みのポイント

  • BeanCreationException別の例外を内包していることが多く、スタックトレースのCaused by をよく見る必要があります。
  • 依存するBean(NonExistentBeanなど)の定義やアノテーションが正しいか、設定ファイルに定義があるかをチェックしましょう。
###############お知らせ################
ブログランキングのITカテゴリに参加してみました。
この記事が役に立ったなどお力になれたら、 このバナーを押していただけると嬉しいです。

#####################################

-未分類