スプリングコンテキストをロードしたリスナーを手に入れます
質問
標準的な方法でスプリングコンテキストをロードする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ティアやアプリサーバーなしで使用する柔軟性が得られます。