コード改造によるNoSuchBenDefinitionException:no bean named'XXXX'available問題解決方案

889 ワード

この間のプロジェクトのスキャンで規範に合わないところができました.種類の問題があります.コードの中ではSpringから直接beanオブジェクトを獲得して、get Class方法でクラスを獲得します.プロジェクトはSprigbootを使って開発されました.
 元:
Class extends Object> clazz = Class.forName(className);
 現在:
Object bean = applicationContext.getBean(className);
Class extends Object> clazz = bean.getClass();
後続のコードテストでは、no bean named'XXXX'availableの問題がたくさん出てきました.発生した問題をまとめました.
1、classinameは全類名を使っていません.例えば、comp.way.inter.impl.ramplは類名の頭文字小文字に変換する必要があります.クラスはspring管理に任せているので、デフォルトでは小文字のクラス名をbeanのidとして使います.
2、クラス名が全部大文字の場合、Springは直接に種類名をidとして使用しますので、類名は必ずラクダ峰構造を規範化して使用しなければならないので、コードの中で統一的に処理するのに有利です.
3、Componentのコメント後にvalueで名前を指定すると、beanの取得にも影響します.例えば:@Component(value=「CalureImpl」);
4、類名の命名は規範ではなく、$などの特殊文字を使用する.
5、直接類インターフェースの名称を使って実現類のbeanを取得し、インターフェースはComponent注釈を使用していません.
6、プロジェクトに重名のクラスがあります.beanの取得にも影響します.