スプリングコンテキストをロードしたリスナーを手に入れます

StackOverflow https://stackoverflow.com/questions/4470779

  •  11-10-2019
  •  | 
  •  

質問

標準的な方法でスプリングコンテキストをロードするWebアプリケーションがあります。

web.xml

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath*:META-INF/applicationContext.xml
        </param-value>
    </context-param>
    <listener>
        <listener-class>
             org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

残念ながら、私のアプリケーションは「純粋な」Webアプリケーションではありません。つまり、実際のフロントエンドはありませんが、Web.xmlリスナーを介して初期化されるリモートアクターだけです。私のakka俳優(標準的なpojo)は、春のコンテキストを手に入れる必要があるので、私の質問は次のとおりです。

基本的に使用できません:

WebApplicationContextUtils.getWebApplicationContext(ctx);

... Akkaの俳優はServletContextに言及していないためです。

ありがとう。

役に立ちましたか?

解決

よく知られているIDを備えたSpringContexterのインスタンスを作成する独自の初期イザーを作成し、SpringContextで何かをする必要があるアクターは、ActorRegistryのSpringContextorを見てメッセージを送信できます。

他のヒント

  • これらのポジョがスプリングビーンズの場合、それらを実装させることができます ApplicationContextAware

  • 使用できます @Configurable ポジョをスプリングビーンにするために

  • 彼らがスプリングビーンズでない場合、あなたは ServletContext スタートアップのJNDIで、JNDI経由でアクセスします。

Web層に非常に強く依存しているデザインについて疑問に思います。

推奨されるスプリングイディオムは、Web層から呼び出されるPojoインターフェイスサービスレイヤーを持つことです。利点は、Web層が完全に削除された場合でも、サービスレイヤーを使用できることです。

サービスレイヤーを持っていない場合、おそらくそれを追加すると、Webティアやアプリサーバーなしで使用する柔軟性が得られます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top