コードは以下の通りであります:
/ ** *インジェクションの注釈、マークのみの役割を果たし、空であります * / @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(); } }