@Role注释允许我们为具有不同范围的组件定义另一个命名角色 - 它允许我们将相同的组件类绑定到不同的上下文变量。 (任何Seam组件实例都可以绑定到多个上下文变量,但这允许我们在类级别执行它,并利用自动实例化。)
@Name("user")
@Entity
@Scope(CONVERSATION)
@Roles({@Role(name="currentUser", scope=SESSION),
@Role(name="tempUser", scope=EVENT)})
public class User {
...
}
春天怎么样?
答案 0 :(得分: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{}
答案 1 :(得分: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();
}