私はSpringを使っていくつかの残りのWebサービスを実装しました。 私はすべてのWebサービスの前に実行する必要がある共通のコードをいくつか持っています。 私は明示的に、この共通コードを各Webサービスの開始時に明示的に呼び出します。Spring Webサービスを実行する前にいくつかのコードを実行するには
Webサービスを呼び出す前にスプリングを「自動的に」呼び出す方法はありますか?
私はSpringを使っていくつかの残りのWebサービスを実装しました。 私はすべてのWebサービスの前に実行する必要がある共通のコードをいくつか持っています。 私は明示的に、この共通コードを各Webサービスの開始時に明示的に呼び出します。Spring Webサービスを実行する前にいくつかのコードを実行するには
Webサービスを呼び出す前にスプリングを「自動的に」呼び出す方法はありますか?
あなたは春AOPの切片ごとにWebサービスを使用して、次のコードit.Likeに共通のコードを実行する必要があります
<bean id="aspect" class="com.zhuyiren.Aspect"/>
<aop:config>
<aop:aspect ref="aspect">
<aop:before method="before" pointcut="execution(* com.zhuyiren.service..*.*(..))"/>
</aop:aspect>
</aop:config>
コードの上に呼び出しを意味することにcom.zhuyiren.service
でパッケージ化され、いくつかの豆のすべての方法を常に実行。あなたはcommon
method.Likeに共通のコードを書くことができcom.zhuyiren.Aspect
方法common
:
public void common(){
System.out.println("execute some common code");
}
テストケース:
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("test.xml");
UserService service = context.getBean(UserService.class);
System.out.println(service.getUser(3));
}
プリントは次のとおりです。あなたはそれを拡張し、必要なリクエストから情報を抽出することができます
execute some common code
UserInfo{id=3, name='zhuyiren', password='123456', testString=[]}
がHandlerInterceptorAdapter を見てみましょう
ベストの答えは、コードに依存し
あなたが実行したいものです。
1つの手法は、@ dabaicaiの回答に記載されているように、AOPを使用することです。
異なる手法は、JEEフィルタを追加して、リクエストがハンドラメソッドに入る前に処理することです。
はここにいくつかのリンクです:
別のオプション: "春のJEEフィルタ"
のためのGoogle検索あなたは 'Webサービスを呼び出す前に' を定義することはできますか? (認証、監査ロギング、セッションの初期化など)、サービスを呼び出す前に何らかの設定ステップ(プールの初期化、リソースとマップのロード/準備、参照テーブルの作成など)等。)? – user2478398
コードを試しましたか?より明確なシナリオのためにそれらを投稿できますか? –
リクエスト情報(ブラウザ、IP、OSバージョン)を保存する必要があります。httpRequestオブジェクトにアクセスする必要があります。これは、すべてのWebサービスで手動で行うのではなく、春にサポートされているものがあれば尋ねています。 –