[春] proxyMode

シナリオ

私たちは、Beanのスコープを設定すると@Scope、ショッピングカートのシナリオがあるとき、我々は通常のBeanを格納するSingleton単一の場合、間違いなくカートは、各ユーザのショッピングカートbeanを設定するために、すべて一人ではありませんSession

@Component
@Scope(
        value = WebApplicationContext.SCOPE_SEESION,
        proxyMode = ScopedProxyMode.TARGET_CLASS
)
public class ShoppingCart {
}
@Component
public class StoreService {
    private ShoppingCart shoppingCart;

    @Autowired
    public void setShoppingCart(ShoppingCart shoppingCart){
        this.shoppingCart = shoppingCart;
    }
}

問題

そのためStoreServiceロードされたSpringアプリケーションコンテキストの時に作成された豆のシングルトン、。それが作成されたときに、春がしようとしますShoppingCartsetShoppingCart(メソッド)に豆。

しかし、ShoppingCartBeanはスコープのセッションで、この時点では存在しません。ユーザーがシステムに入った後、セッションを作成するまで、表示されるShoppingCartインスタンスを。

さらに、システム内に複数持つShoppingCartインスタンスを:ユーザーごとに1つ。私たちは、春が固定注入させたくないShoppingCartのインスタンスをStoreService真ん中。自分のショッピングカートを保持する必要があり、各ユーザので。

解きます

することにより@Scope設定proxyModeパラメータ。春は実際のではないだろうShoppingCartに豆StoreService

春はに注入されますShoppingCart、そのエージェント豆。このエージェントが暴露されるShoppingCart同じ方法で、あなたはStoreServiceそれがショッピングカートだと思います。しかし、StoreService呼び出しShoppingCart方法は、エージェントが怠惰な解析に委託しての本当の役割の中にセッションを呼び出すことになるShoppingCart豆。

注意を払います

ScopedProxyMode.INTERFACESこれは、インターフェイスのために使用されています。

必要とされている特定のクラスScopedProxyMode.TARGET_CLASS

おすすめ

転載: www.cnblogs.com/maplesnow/p/11628034.html