2012-04-21 54 views
0

in seam @Role註釋允許我們爲一個組件定義一個額外的命名角色,並使用不同的作用域 - 它允許我們將相同的組件類綁定到不同的上下文變量。 (任何Seam組件實例可以被綁定到多個上下文變量,但是這讓我們做的一流水平,並利用自動實例化。)彈簧中具有多個角色的組件

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

    ... 

} 

怎麼樣春天?

回答

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{} 
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(); 
}