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/
關於作者:專注於基礎平臺的專案開發。如有問題或建議,請多多賜教!
版權宣告:本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結。
特此宣告:所有評論和私信都會在第一時間回覆。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我
聲援博主:如果您覺得文章對您有幫助,可以點選文章右下角【推薦】一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!