2017-05-21 3 views
-1

私はオブジェクトXのモデルを持っていると言います。このオブジェクトは、Springブートの助けを借りてすべてのCRUD操作を実装します。非春のブートオブジェクトの作成

標準のPOJOを使用してこのオブジェクトを編集できるようにする必要があります。これまでのところ、私は@Configurable@Componentとさえ@Serviceを使用してみました

public class Foo { 
    @Autowired 
    private XRepository xDAO; 
    /* 
     Do whatever I want with X and then save it again in the DB using xDAO 
    */ 
} 

を、しかしそれらのどちらも私のXRepository@Autowireすることができます:POJOはこのようになります。

どうすればよいですか?

+0

を使用して、このクラスを呼び出すには、スプリングによって管理Fooのですか? XRepositoryはスプリングデータリポジトリですか? –

+0

Fooは春には管理されていません。私がやりたいことは、可能ならば 'Foo f = new Foo();だけです。 f.whatever() ' – Alberto

+0

' @ Autowired'はスプリングで管理されていないオブジェクトでは動作しません。 xDAOをあなたのFooに手動でsorta注入することができます(Spring DIコンテナの外で): 'Foo foo = new Foo(); foo.xdaO = ctx.getBean(XRepository.class); ' –

答えて

0

あなたの説明はできません。コンポーネントは、オブジェクトがSpringによって管理されている場合にのみ配線できます。あなたのケースではそうではありません。したがって、依存関係にオートワイヤリングすることは不可能です。あなたにはさまざまな選択肢があります。ここにいくつかあります:

  1. Fooクラス以外のリポジトリを使用してください。これはややハック、おそらくお勧めできませんが、あなたがリポジトリ静的を作ることができる春
  2. によって管理されるクラスで、コンストラクタで fooへの依存性として春
  3. によって管理されている別の クラスでの操作
  4. パスリポジトリを統合Fooの中の変数と春でそれを設定するには、私の意見では

@PostConstructのようなものでコンポーネントを管理する最良のオプション1.

-1

私は十分に自分を表現していなかったと思います、いずれかの方法を使用することです私は私の手続きの解決策を見つけましたm。

溶液は、hereです。

私はその後、私はちょうど@AutowiredFoo@ServiceとしてFooを宣言:

@Autowired 
public class Foo { 
@Autowired 
    private XRepository xDAO; 
    //some code 
} 

その後、私は@Autowired注釈

@Autowired Foo foo 
foo.doThings(); 
関連する問題