javascript
Spring4.0之四:Meta Annotation(元注解)
Spring框架自2.0開始添加注解的支持,之后的每個(gè)版本都增加了更多的注解支持。注解為依賴注入,AOP(如事務(wù))提供了更強(qiáng)大和簡(jiǎn)便的方式。這也導(dǎo)致你要是用一個(gè)相同的注解到許多不同的類中去。這篇文章介紹meta annotation來(lái)解決這個(gè)問(wèn)題。
Meta Annotation(元注解)定義
Spring4.0的許多注解都可以用作meta annotation(元注解)。元注解是一種使用在別的注解上的注解。這意味著我們可以使用Spring的注解組合成一個(gè)我們自己的注解。
創(chuàng)建組合注解
自定義注解或組合注解是從其他的Spring元注解創(chuàng)建的。這種注解分為兩類:
- 1、只是為了編碼簡(jiǎn)單將多個(gè)注解組合成一個(gè)注解;
- 2、可以定義一個(gè)可復(fù)用的注解,這個(gè)注解可以解決問(wèn)題,但是不用記住所有單獨(dú)的注解。
如以下的DAO操作:
import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @Repository @Scope("prototype") @Transactional(propagation = Propagation.REQUIRES_NEW, timeout = 30, isolation=Isolation.SERIALIZABLE) public class OrderDaoImpl implements OrderDao { ... }?沒(méi)有任何的業(yè)務(wù)代碼,但是類上注解的申明就讓代碼有10幾行之多。為了簡(jiǎn)化DAO,我們提供一個(gè)組合DAO注解,使用Spring元注解來(lái)自定義一個(gè)注解。
import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @Repository @Scope("prototype") @Transactional(propagation = Propagation.REQUIRES_NEW, timeout = 30, isolation=Isolation.SERIALIZABLE) public @interface MyDao { }?使用這個(gè)自定義/組合注解,我們可以移除掉DAO上的許多注解:
@MyDao public class OrderDaoImpl implements OrderDao { ... }?
注解的屬性
大部分情況下,注解是需要屬性的。自定義的注解也可以提供屬性。比如:@Repositoy可以提供一個(gè)name屬性。
@Repository("myOrderDao")?由于自定義的@MyDao可能被很多DAO使用,所以對(duì)@Repository的name硬編碼是不行的。所以我們簡(jiǎn)單的添加一個(gè)value屬性到@MyDao上(和@Repository中的相同的value屬性)。
@Repository @Scope("prototype") @Transactional(propagation = Propagation.REQUIRES_NEW, timeout = 30, isolation=Isolation.SERIALIZABLE) public @interface MyDao { String value(); }用新的自定義注解定義bean如下:
@MyDao("myOrderDao") public class OrderDaoImpl implements OrderDao { ... }?
?更多關(guān)于元數(shù)據(jù)注解的問(wèn)題訪問(wèn)這里:Srping Framework Reference Documentation
總結(jié)
以上是生活随笔為你收集整理的Spring4.0之四:Meta Annotation(元注解)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: html 的c标签库,jstl C标准标
- 下一篇: 计算机工具软件未来的发展,2017年我国