Annotation的語法和使用

http://blog.csdn.net/cdl2008sky/article/details/6265742 ide

(1) 、<context:component-scan base-package="*.*" />ui

 該配置隱式註冊了多個對註解進行解析的處理器,如:spa

 AutowiredAnnotationBeanPostProcessor      .net

 CommonAnnotationBeanPostProcessor hibernate

 PersistenceAnnotationBeanPostProcessor    prototype

 RequiredAnnotationBeanPostProcessor component

 其實,註解自己作不了任何事情,和XML同樣,只起到配置的做用,主要在於背後強大的處理器,其中就包括了<context:annotation-config/>配置項裏面的註解所使用的處理器,xml

 因此配置了<context:component-scan base-package="">以後,便無需再配置<context:annotation-config>blog

 

 

(2)、@Component、@Repository、@Service、@Controller、@Autowired、@Resource接口

 而Spring2.5就爲咱們引入了組件自動掃描機制 

 它能夠在classpath下尋找標註了@Service、@Repository、@Controller、@Component註解的類,並把這些類歸入Spring容器中管理,它的做用和在XML中使用bean節點配置組件是同樣的使用自動掃描機制,則需配置<context:component-scan base-package="com.jadyer"/>啓動自動掃描,其中base-package指定須要掃描的包,它會掃描指定包中的類和子包裏面類 

 @Service用於標註業務層組件 

 @Repository用於標註數據訪問組件,即DAO組件 

 @Controller用於標註控制層組件,如Struts中的Action 

 @Component泛指組件,當組件不要好歸類時,能夠使用這個註解進行標註

 一、能夠使用諸如@Service("personDao")修改bean名稱,而它默認的是將首字母小寫的類名做爲<bean>名稱 

 二、若要更改<bean>做用域的話,能夠使用@Scope("prototype")註解來修改<bean>做用域

 

 通常使用@Resource註解,而不要使用@Autowired註解 

 由於@Autowired註解是Spring提供的,而@Resource註解是J2EE提供的 

 在JDK6中就已經包含@Resource註解了,因此它沒有跟Spring緊密耦合 

 

 

(3)、<tx:annotation-driven />

 @Transactional 註解能夠被應用於接口定義和接口方法、類定義和類的 public 方法上。

 Spring團隊的建議是你在具體的類(或類的方法)上使用 @Transactional 註解,而不要使用在類所要實現的任何接口上。

 @Service

 @Transactional(rollbackFor=Exception.class)   //對當前類的全部方法起做用

 @SuppressWarnings("serial")

 public class ButtonBo extends GlobalBo {

  ....

  @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true) //具體方法上

    public Button findButton(String buttonid) throws BaseException {

     return hibernateEntityDao.get(Button.class, buttonid);

   }

 }

相關文章
相關標籤/搜索