Spring常用註解彙總
阿新 • • 發佈:2019-01-09
@PreDestroy
在方法上加上註解@PreDestroy ,這個方法就會在Bean 被銷燬前被Spring 容器執行。
@Repository
• 與@Controller 、@Service 類似,都是向spring 上下文中註冊bean ,不在贅述。
@Component (不推薦使用)
@Component 是所有受Spring 管理元件的通用形式,Spring 還提供了更加細化的註解形式: @Repository 、@Service 、@Controller ,它們分別對應儲存層Bean ,業務層Bean ,和展示層Bean 。
目前版本(2.5 )中,這些註解與@Component 的語義是一樣的,完全通用, 在Spring 以後的版本中可能會給它們追加更多的語義。 所以,我們推薦使用@Repository 、@Service 、@Controller 來替代@Component 。
@Scope
• 例如
@Scope("session")
@Repository()
public class UserSessionBean implementsSerializable {}
• 說明
在使用XML 定義Bean 時,可以通過bean 的scope 屬性來定義一個Bean 的作用範圍,
同樣可以通過@Scope 註解來完成
@Scope中可以指定如下值:
singleton:定義bean的範圍為每個spring容器一個例項(預設值)
prototype:定義bean可以被多次例項化(使用一次就建立一次)
request:定義bean的範圍是http請求(springMVC中有效)
session:定義bean的範圍是http會話(springMVC中有效)
global-session:定義bean的範圍是全域性http會話(portlet中有效)
@SessionAttributes
• 說明
Spring 允許我們有選擇地指定 ModelMap 中的哪些屬性需要轉存到 session 中,
以便下一個請求屬對應的 ModelMap 的屬性列表中還能訪問到這些屬性。
這一功能是通過類定義處標註 @SessionAttributes 註解來實現的。
@SessionAttributes 只能宣告在類上,而不能宣告在方法上。
• 例如
@SessionAttributes("currUser") // 將ModelMap 中屬性名為currUser 的屬性
@SessionAttributes({"attr1","attr2"})
@SessionAttributes(types = User.class)
@SessionAttributes(types = {User.class,Dept.class})
@SessionAttributes(types = {User.class,Dept.class},value={"attr1","attr2"})
@InitBinder
• 說明
如果希望某個屬性編輯器僅作用於特定的 Controller ,
可以在 Controller 中定義一個標註 @InitBinder 註解的方法,
可以在該方法中向 Controller 了註冊若干個屬性編輯器
• 例如
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}
@Required
• 例如
@required
public setName(String name){}
• 說明 copyright www.itxxz.com
@ required 負責檢查一個bean在初始化時其宣告的 set方法是否被執行, 當某個被標註了 @Required 的 Setter 方法沒有被呼叫,則 Spring 在解析的時候會丟擲異常,以提醒開發者對相應屬性進行設定。 @Required 註解只能標註在 Setter 方法之上。因為依賴注入的本質是檢查 Setter 方法是否被呼叫了,而不是真的去檢查屬性是否賦值了以及賦了什麼樣的值。如果將該註解標註在非 setXxxx() 型別的方法則被忽略。
@Qualifier
• 例如
@Autowired
@Qualifier("softService")
private ISoftPMService softPMService;
• 說明
使用@Autowired 時,如果找到多個同一型別的bean,則會拋異常,此時可以使用 @Qualifier("beanName"),明確指定bean的名稱進行注入,此時與 @Resource指定name屬性作用相同。
在方法上加上註解@PreDestroy ,這個方法就會在Bean 被銷燬前被Spring 容器執行。
@Repository
• 與@Controller 、@Service 類似,都是向spring 上下文中註冊bean ,不在贅述。
@Component (不推薦使用)
@Component 是所有受Spring 管理元件的通用形式,Spring 還提供了更加細化的註解形式: @Repository 、@Service 、@Controller ,它們分別對應儲存層Bean ,業務層Bean ,和展示層Bean 。
目前版本(2.5 )中,這些註解與@Component 的語義是一樣的,完全通用, 在Spring 以後的版本中可能會給它們追加更多的語義。 所以,我們推薦使用@Repository 、@Service 、@Controller 來替代@Component 。
@Scope
• 例如
@Scope("session")
@Repository()
public class UserSessionBean implementsSerializable {}
• 說明
在使用XML 定義Bean 時,可以通過bean 的scope 屬性來定義一個Bean 的作用範圍,
同樣可以通過@Scope 註解來完成
@Scope中可以指定如下值:
singleton:定義bean的範圍為每個spring容器一個例項(預設值)
prototype:定義bean可以被多次例項化(使用一次就建立一次)
request:定義bean的範圍是http請求(springMVC中有效)
session:定義bean的範圍是http會話(springMVC中有效)
global-session:定義bean的範圍是全域性http會話(portlet中有效)
@SessionAttributes
• 說明
Spring 允許我們有選擇地指定 ModelMap 中的哪些屬性需要轉存到 session 中,
以便下一個請求屬對應的 ModelMap 的屬性列表中還能訪問到這些屬性。
這一功能是通過類定義處標註 @SessionAttributes 註解來實現的。
@SessionAttributes 只能宣告在類上,而不能宣告在方法上。
• 例如
@SessionAttributes("currUser") // 將ModelMap 中屬性名為currUser 的屬性
@SessionAttributes({"attr1","attr2"})
@SessionAttributes(types = User.class)
@SessionAttributes(types = {User.class,Dept.class})
@SessionAttributes(types = {User.class,Dept.class},value={"attr1","attr2"})
@InitBinder
• 說明
如果希望某個屬性編輯器僅作用於特定的 Controller ,
可以在 Controller 中定義一個標註 @InitBinder 註解的方法,
可以在該方法中向 Controller 了註冊若干個屬性編輯器
• 例如
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}
@Required
• 例如
@required
public setName(String name){}
• 說明 copyright www.itxxz.com
@ required 負責檢查一個bean在初始化時其宣告的 set方法是否被執行, 當某個被標註了 @Required 的 Setter 方法沒有被呼叫,則 Spring 在解析的時候會丟擲異常,以提醒開發者對相應屬性進行設定。 @Required 註解只能標註在 Setter 方法之上。因為依賴注入的本質是檢查 Setter 方法是否被呼叫了,而不是真的去檢查屬性是否賦值了以及賦了什麼樣的值。如果將該註解標註在非 setXxxx() 型別的方法則被忽略。
@Qualifier
• 例如
@Autowired
@Qualifier("softService")
private ISoftPMService softPMService;
• 說明
使用@Autowired 時,如果找到多個同一型別的bean,則會拋異常,此時可以使用 @Qualifier("beanName"),明確指定bean的名稱進行注入,此時與 @Resource指定name屬性作用相同。