java - Spring中具有多种角色的组件

标签 java spring seam lifecycle

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

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

    ... 

}

Spring 呢?

最佳答案

在 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{}

关于java - Spring中具有多种角色的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10259071/

相关文章:

java - Spring中的NotWritablePropertyException错误

java - 条件检查 c :if always fails

http - 如何将查询参数传递给 EntityQuery 接口(interface)

java - 与预泛型原始类型的泛型边界

java - 连接证书和 key 文件,以便它可以包含在 java cacert 文件中

Java Spring/Maven LogFactory 错误

java - 如何将我的 spring xml 配置移到我的 web 应用程序之外?

css - 丰富的 :extendedDataTable custom css

java - 如何混淆ProGuard,但在测试过程中保持名称可读性?

java - 来自用户模型的 ArrayList 返回 null