[英]Where should I place field/method annotations?
我很欣賞這個問題的答案可能是“只是一致”,但我想了解在字段或方法中添加適用於字段/方法的注釋是否有好處。 例如,有什么好處:
@XmlElement
private String str;
public String getString() {
return str;
}
過度:
private String str;
@XmlElement
public String getString() {
return str;
}
謝謝。
這取決於您是否希望在編組或解組操作期間執行get / set方法中的邏輯。
示例#1 - JPA實體
一些JPA實現使用字節碼操作來“編織” getter上的代碼以執行延遲加載。 如果要將此類型的模型映射到XML,則需要對getter進行注釋以確保調用get方法上的邏輯。
示例#2 - 不匹配的get / set方法
在下面的答案中,用戶具有不兼容的bean訪問方法。 對於該用例,我建議使用字段訪問。
示例#3 - 只讀屬性
如果您的對象模型具有帶有getter但沒有setter的屬性,則字段訪問非常有用。
欲獲得更多信息
這取決於你在做什么。 例如:您的xml序列化器/轉換器使用getter還是直接讀取字段?
在第一種情況下,由於字段是私有的,因此將使用反射執行對帶注釋元素的訪問。 這可能會導致最佳性能降低(需要在實際情況下進行檢查)。
在第二種情況下,將使用getter / setter執行訪問。
例如,在Hibernate中,注釋私有屬性可以創建真正的只讀屬性:
@Id
private int id;
// No setter so it cannot be changed without reflexion
public int getId() {
return id;
}
另一方面,注釋訪問器將使您有機會做更多的事情,而不僅僅是設置/獲取屬性。
利益取決於注釋所代表的內容。
許多框架允許字段/方法注釋相互補充,例如Spring框架中的setter注入。 使用字段注釋可以決定是否應該存在setter。
其他注釋處理器可能會觸發不同的行為,具體取決於它是注釋的方法還是字段。 例如,安全注釋可以放在對該方法的方法控制授權上,而字段注釋可以控制對所有引用該變量的例程的授權。
但總的來說,我認為該選項很可能是偏愛的選項 ,或者您願意的話,可以選擇樣式 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.