0

在 seam 中 @Role 注释让我们可以为组件定义一个额外的命名角色,具有不同的作用域——它允许我们将相同的组件类绑定到不同的上下文变量。(任何 Seam 组件实例都可能绑定到多个上下文变量,但这让我们可以在类级别进行,并利用自动实例化。)

@Name("user")
@Entity
@Scope(CONVERSATION)
@Roles({@Role(name="currentUser", scope=SESSION),
        @Role(name="tempUser", scope=EVENT)})
public class User { 

    ... 

}

春天呢?

4

2 回答 2

1

在 Spring 中没有开箱即用的方法可以做到这一点。

您可以使用 XML 或 JavaConfig 在多个范围内连接相同的 bean 类型,但不能从 bean 类中连接。并且:我也没有看到这样做的必要性。如果您在不同的范围内使用相同的 bean 类,您可能会遇到架构问题。

一种可能的解决方案:

定义一个包含数据的抽象类和两个包含 Spring 注释的子类,每个范围一个:

public abstract class User{
   // fields, getters , setters
}

@Component @Scope("session")
public class SessionUser extends User{}

@Component @Scope("request")
public class TempUser extends User{}
于 2012-04-21T15:53:52.837 回答
0

我使用了 JavaConfig:

@Bean
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public EntityService requestScopedEntityService() {
    return new EntityService();
}

@Bean
@Scope(value = "prototype")
public EntityService prototypeScopedEntityService() {
    return new EntityService();
}
于 2012-08-30T12:50:09.657 回答