2017-02-23 12 views
0

私は比較的Javaに慣れていて、Webバックグラウンドから来て、私はSpringでWebアプリケーションを実装しようとしていました。 enter image description here非スプリングクラスにSpringコンテキストを注入

そして、私は基本的に、私の知る限りの手段私のクラスを理解できるようにコントローラーフォルダに見つかったクラスにSpringコンテキストを注入しようとしています:

主な問題は、私は次のフォルダ構造を持っていますSpring依存ではありません。

アプリケーションがバックエンドとしてのMongoDBを使用し、私はこのような文脈instantinateしようとしています:COM:私はcontext.getBean(...)の行に、この例外を取得してい

WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); 

IODataInterface mongo = context.getBean(BookModel.class); 

を。 web.spring.Controllers.DemoController.DemoController(DemoController.java:19)

誰かが実際の用語を正しく説明できれば、私は本当にうれしく思います0のJavaの仕事経験を持つ人のためのかなり高度なものに飛び乗った。

完全な例外スタック:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

そして、私の知る限り見るように、コンテキストが作成されますように思われるが、getBean()が動作しません。私は今本当に混乱しています。

+1

完全な例外をポストし、あなたのコントローラーはすでにBeanになっているはずです。したがって、通常のautowiringが機能するはずです。 – Strelok

+0

私は実際にコンテキストを持っているようだが、getBeanはまだ動作しないので、autowiringについてはわからない例外を追加しました。 BookModelもapplicationContextでBeanとして定義されています。これは本当に混乱しています。 –

答えて

1

モデルクラス(MongoDbを使用しているので、@Documentの注釈が付いています)のインスタンスを取得しようとしているようです。 @DocumentおよびJPA @Entity注釈付きクラスは、実際にはSpring Beanではありません。

新しいインスタンスをインスタンス化するには、new BookModel()を使用します。

PS。さて、小文字のパッケージ/フォルダ命名規則を採用してください。クラス名は大文字で始める必要があります。

+0

私のモデルクラスはMongoTemplateも使用していますが、Beanなしで初期化する方法がわかりません。これに対する適切なアプローチは何でしょうか? –

+0

これは、モデルをデータレイヤーの実装と結合しているので、良い設計ではありません(MongoDbではなく他のオブジェクトにオブジェクトを保存する必要がある場合)。 MongoTemplateを使用している場合は、MongoTemplateを注入して使用する「サービス」レイヤーを導入してください。ビジネスロジックをサービスに入れ、コントローラにサービスを注入します。また、モデルクラスにあなたの依存関係を注入するSpringを取得することはできません。 – Strelok

関連する問題