【轉】Spring Annotation 詳解

(1) 、<context:component-scan base-package="*.*" />
 該配置隱式註冊了多個對註解進行解析的處理器,如:
 AutowiredAnnotationBeanPostProcessor      
 CommonAnnotationBeanPostProcessor 
 PersistenceAnnotationBeanPostProcessor    
 RequiredAnnotationBeanPostProcessor 
 其實,註解自己作不了任何事情,和XML同樣,只起到配置的做用,主要在於背後強大的處理器 
 其中就包括了<context:annotation-config/>配置項裏面的註解所使用的處理器 
 因此配置了<context:component-scan base-package="">以後,便無需再配置<context:annotation-config>ui


(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>做用域spa

 通常使用@Resource註解,而不要使用@Autowired註解 
 由於@Autowired註解是Spring提供的,而@Resource註解是J2EE提供的 
 在JDK6中就已經包含@Resource註解了,因此它沒有跟Spring緊密耦合.net


(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);
   }
 }hibernate

 轉載地址;http://blog.csdn.net/cdl2008sky/article/details/6265742,感謝做者分享
相關文章
相關標籤/搜索