単純なJava依存性注入のアノテーションを使用します

 

コードは以下の通りであります:

/ **
 *インジェクションの注釈、マークのみの役割を果たし、空であります
 * /
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@interfaceを注入{
}

/ **
 * Beanコンテナを取得し、コンテナが買収を通過しなければならない、新しい新しい缶があるため、反射注釈情報を使用して注入を入手する必要があるため、使用できません
 * /
クラスコンテナ{
    パブリック静的<T> T getBean(クラス<T> clazz){
        T OBJ = NULL;
        {試します
            OBJ = clazz.newInstance()。
            フィールド[]フィールド= clazz.getDeclaredFields()。
            {(フィールドフィールドフィールド)のために
                (もし!field.isAnnotationPresent(Inject.class))// @Injectは言葉を注釈付きの場合
                    持続する;
                (もし!field.canAccess(OBJ))
                    field.setAccessible(真の);
                field.set(OBJ、field.getType()のnewInstance()); //オブジェクトに結合
            }
        }キャッチ(IllegalAccessExceptionが|ないInstantiationException電子){
            新しいのRuntimeException(e)を投げます。
        }
        OBJ返します。
    }
}


//テスト
クラスDAO {
    パブリック文字列GETINFO(){
        「hello」を返します。
    }
}

クラスサービス{
    @Inject
    プライベートDAOのDAO。

    ます。public void doSth(){
        System.out.println(dao.getInfo())。
    }

    パブリック静的無効メイン(文字列[] args){
        Container.getBean(Service.class).doSth();
    }
}
  

  

おすすめ

転載: www.cnblogs.com/yuanyb/p/12043950.html