2016-08-14 8 views
0

私の質問は非常に簡単です:mainメソッドのないストラットアプリで春.getBean(...)

私はそれが依存性注入のために春を使用して作成し、統合を休止StrutsのWebアプリケーションを持っています。

このアプリはメインの方法はありません。

私の知るところによると、私のアプリでは(通常はメインメソッドに配置されている)これが必要です...彼らは、このような最初のBeanを作成する必要があると言います。 Strutsのアクションからサーブレットにこのコードを配置する以外

MyClass myClass = applicationContext.getBean("myClass"); 

(私はそれを行うとき、それは動作します)、それを取り除くためにどのような方法はありますか?

@Autowire 
MyClass myClass; 

... 
... 
myClass.doSomething(); 

私はnullポインタ例外を受け取り、Beanは注入されません。

getBeanを削除する方法がない場合は、メインメソッドを持たないWebアプリケーションではどこで使用されますか?

+1

あなたはあなたのStrutsアプリケーションにSpringをどのように統合しようとしているのか説明していません。 (Strutsの外部ソートのバージョンを示すものでもありません。)Struts 1は、直接、IIRCを表示することで長い間サポートされていますが、Struts 2はSpringプラグインを使用して簡単にサポートしています。 –

+0

ストラット1.3、スプリング3.2、ハイバーネイト4.x。これは、休止状態のシンプルなCRUDテストアプリです。 – aleksandar

+0

(再びIIRC)Spring 3は直接Struts 1をサポートしており、その使用法はSpringのドキュメントで詳しく説明されています。 –

答えて

0

あなたはStrutsのアクションが豆(私たちはWebApplicationContextUtilsを使用)を取得するために春に明示的な呼び出しを行うことなく、それをしたい場合は、this articleは、他の2つのオプションについて説明します。管理するために

  1. 設定春BeanとしてのアクションをContextLoaderPluginを使用して、Springコンテキスト ファイルに依存関係を設定します。

  2. サブクラスのSpringのActionSupportクラスと、getWebApplicationContext() メソッドを使用してSpring管理Beanを明示的に取得します。あなたのStrutsアクションで春意識を持つ:

は、私はあなたが避けるためにしようとしていると思うものを避けることはありません。 ( @AutowiredはSpring固有のアノテーションでもありますが)

両方の場所でアクションを複製する必要がある場合のように、1がどのようにしてstruts-config.xmlとやりとりするかはわかりません。

私たちは、アプリケーションの基本Actionクラスで1つまたは2つの高レベルBean(「ファサード」)をSpringに明示的に要求することが最も簡単なアプローチであると判断しました。

関連する問題