2013-03-07 76 views
0

下面的bean是無狀態的,因此是線程安全的嗎?更具體地說,我的consern是String數組的注入值。這是否會影響bean的狀態?無權利?這個Spring bean是無狀態的嗎?

public class ServiceImpl implements Service { 

private static final Logger LOG = Logger.getLogger(ServiceImpl.class); 

/* Injected values properties file. */ 
private String[] values; 

@Autowired 
private DAO dao; 


@Transactional 
@Override 
public void invoke(String submissionId) { 

    dosomething.... 
} 
} 
+0

將什麼樣的值分配給'values'數組 – 2013-03-07 10:24:33

回答

0

如果沒有對values陣列的寫訪問權限,則它是無狀態的。否則,你可能會遇到錯誤。

+0

沒有寫入。只讀... – boom123 2013-03-07 12:16:39

0

如果在初始化後不修改屬性(或者bean引用的對象的屬性),則該bean有效無狀態。不管你使用什麼樣的類型。

所以,如果你不修改數組或其中一個項目,你的bean是有效的無狀態/有效的不可變的。

3

主要問題要問這裏是

什麼是無狀態的對象?

答案是你的對象是無狀態的,如果它的屬性在其生命週期中沒有改變。我假設你的bean的作用域爲singleton,因此,只要values屬性在bean的生命週期中沒有改變,它就是無狀態的。否則不是。

+0

這個bean是單身人士是的。我只是讀了這些值。沒有變化。 – boom123 2013-03-07 12:16:21

+0

然後它就像我上面所說的那樣是無狀態的。 – benzonico 2013-03-07 12:44:29