spring 2.5 中除了提供 @Component 註釋外,還定義了幾個擁有特殊語義的註釋,它們分別是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,這 3 個註釋和 @Component 是等效的,但是從註釋類的命名上,很容易看出這 3 ... ...
@Service用於標註業務層組件 @Controller用於標註控制層組件(如struts中的action) @Repository用於標註數據訪問組件,即DAO組件 @Component泛指組件,當組件不好歸類的時候,我們可以使用這個註解進行標註spring 2.5 中除了提供 @Component 註釋外,還定義了幾個擁有特殊語義的註釋,它們分別是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,這 3 個註釋和 @Component 是等效的,但是從註釋類的命名上,很容易看出這 3 個註釋分別和持久層、業務層和控制層(Web 層)相對應。
通過在類上使用 @Service、@Controller、@Repository和@Component註解,Spring會自動創建相應的 BeanDefinition 對象,並註冊到 ApplicationContext 中。這些類就成了 Spring受管組件。這三個註解除了作用於不同軟體層次的類,其使用方式與 @Repository 是完全相同的。
當一個 Bean 被自動檢測到時,會根據那個掃描器的 BeanNameGenerator 策略生成它的 bean名稱。預設情況下,對於包含 name 屬性的 @Component、@Repository、 @Service 和@Controller,會把 name 取值作為 Bean 的名字。如果這個註解不包含 name值或是其他被自定義過濾器發現的組件,預設 Bean 名稱會是小寫開頭的非限定類名。如果你不想使用預設 bean命名策略,可以提供一個自定義的命名策略。首先實現 BeanNameGenerator介面,確認包含了一個預設的無參數構造方法。然後在配置掃描器時提供一個全限定類名.
@Service public class UserServiceImpl implements UserService { } @Controller public class UserController { } @Repository public class UserDaoImpl implements UserDao { } @Component public class UserUtil { }
註入方式
把DAO實現類註入到action的service介面(註意不要是service的實現類)中,註入時不要new 這個註入的類,因為spring會自動註入,如果手動再new的話會出現錯誤,然後屬性加上@Autowired後不需要getter()和setter()方法,Spring也會自動註入。
在介面前面標上@Autowired註釋使得介面可以被容器註入,如:
@Autowired @Qualifier("cn") private User user;
當介面存在兩個實現類的時候必須使用@Qualifier指定註入哪個實現類,否則可以省略,只寫@Autowired。
作 者:請叫我頭頭哥
出 處:http://www.cnblogs.com/toutou/
關於作者:專註於基礎平臺的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回覆。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角【推薦】一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!