2017-08-16 5 views
0

に動作していないが、以下の一般的な抽象クラスを取ります。しかし、このような呼び出しの場合:@Configurableはサブクラス

@RestController 
public class TestEntityController { 

    @GetMapping(name = "/test") 
    public String print() { 
     TestEntityRoot entity = new TestEntity(); 
     return entity.print(); 
    } 
} 

nullポインタを取得します。 2番目の例が動作する可能性はありますか?

+0

Beanに「new」をキャストしてSpring Beanを作成することはできません。 Springは、Beanを挿入するためにそれを処理する必要があります。また、私は別の問題を参照してください - エンティティにサービスを注入しないでください - それは間違っています。エンティティは論理を保持すべきではありません。 – Gondy

答えて

1

2番目のケースでは、スプリングのBeanを使用するのではなく、手動でクラスを作成します。代わりにBeanをAutowireしてください。

@RestController 
public class TestEntityController { 
    @Autowired 
    private TestEntity entity 
    @GetMapping(name = "/test") 
    public String print() { 
     return entity.print(); 
    } 
} 
+0

あなたの答えをありがとう。しかし、多形性が主なアイデアでした。私はメソッドprint()とは異なるインプリントでTestEntityRootのさまざまなサブクラスを持つことができます。 TestEntityRoot型で呼びたいと思います。しかし、私はAspectJでそれを達成することはできません。それがSpringで達成できるかどうかも私は分かりません。しかし、できる方法があります。 – GoodYar

+0

同じアプローチを使用してください。代わりにTestEntityRootをAutowireしてください。 – StanislavL

関連する問題