現在、私は春の単体テストアプリケーションを持っています。また、外部認証ソースからセッション Cookie を取得する必要があります。問題は何ですか、この認証プロセスはかなり高価で時間がかかります。サブクラスによって一度認証され、その後のサブクラスが作成される構造を作成しようとしています。認証をヒットせずにこのセッション Cookie を再利用します。再度処理します。
私の問題は、別のサブクラスが作成されるたびに静的 Cookie が null になることです。そして、静的をグローバル変数として使用するのは悪い考えだと読んでいましたが、実行時にSpringフレームワークが設定するため、および他のすべてのクラスができるようにCookieを設定する方法のために、これを行う別の方法を考えられませんでしたこれを使って。
もう一つ情報です。変数は使用中ですが、実行時に変更できます。単一のユーザーがサインインして全面的に使用されるわけではありません。しかし、Sub1 が login を呼び出すようなもので、Cookie があります。次に、SubX が入ってきて、「別の資格情報を使用しているため、別の方法でログインする必要がある」と言うまで、そのログインを使用して複数のテストが行われます。と繰り返します。
これが私のコードの概要です:
public class Parent implements InitializingBean {
protected static String BASE_URL;
public static Cookie cookie;
... All default InitializingBean methods ...
afterPropertiesSet() {
cookie = // login process returns a cookie
}
}
public class Sub1 extends Parent {
@resource public String baseURL;
@PostConstruct
public void init() {
// set parents with my baseURL;
BASE_URL = baseURL;
}
public void doSomething() {
// Do something with cookie, because it should have been set by parent class
}
}
public class Sub2 extends Parent {
@resource public String baseURL;
@PostConstruct
public void init() {
// set parents with my baseURL;
BASE_URL = baseURL;
}
public void doSomethingElse() {
// Do something with cookie, because it should have been set by parent class
}
}