SpringデータRESTとHATEOASを利用したSpring Boot 1.5.4アプリケーションでは、カスタムリソースプロセッサとカスタムコントローラ、カスタムリポジトリがあります。残念ながら、@Service
クラスのコンストラクタインジェクションをMessageSendingOperations
の依存関係に使用すると、カスタムリソースプロセッサが呼び出されなくなりました。カスタムリソース処理を妨げるコンストラクタインジェクション
private final MessageSendingOperations<String> messageTemplate;
@Autowired
public ChannelHandler(MessageSendingOperations<String> messageTemplate) {
this.messageTemplate = messageTemplate;
}
:コンストラクタ・インジェクションを元に戻すことは、すなわちからの復帰、私のカスタムリソースプロセッサの実行を復元
@Autowired
private MessageSendingOperations<String> messageTemplate;
はnull
messageTemplate
その結果、私のカスタムリソースプロセッサを「再できます」。だから、どこかに問題があるのですが、どこに???任意のアイデアをどのようにこれを追跡するには?
+1 - 私はそれを試していませんでした。興味深いことに、 '@ Lazy'コンストラクタの初期化が動作します。つまり、NPEとリソースプロセッサの両方を処理しますが、リソースプロセッサは実行できますが、なぜですか? –
'@ Lazy'は、Beanの初期化の順序を変更するCGLIBプロキシを作成します。 IDEで上のコンストラクタにブレークポイントを設定し、 'messageTemplate'の型を観察するのが簡単な方法です。 – ck1
はい。私はこの作業を行うのになぜ@ @ Lazyが必要なのだろうかと疑問に思っています。つまり、未知の根本原因の回避策のようなにおいがします。 –