@Service用於標注業務層組件(我們通常定義的service層就用這個)
@Controller用於標注控制層組件(如struts中的action)
@Repository用於標注數據訪問組件,即DAO組件
@Component泛指組件,當組件不好歸類的時候,我們可以使用這個注解進行標注。
使用過濾器自定義掃描 <context:component-scan base-package="org.example">
spring開發手冊中這樣寫:
3.12.4. 自動檢測組件的命名
當一個組件在某個掃描過程中被自動檢測到時,會根據那個掃描器的BeanNameGenerator 策略生成它的bean名稱。默認情況下,任何包含 name值的Spring“典型”注解 (@Component、@Repository、 @Service和@Controller) 會把那個名字 提供給相關的bean定義。如果這個注解不包含name值或是其他檢測到的組件 (比如被自定義過濾器發現的),默認bean名稱生成器會返回小寫開頭的非限定(non-qualified)類名。 例如,如果發現了下面這兩個組件,它們的名字會是‘myMovieLister‘和‘movieFinderImpl‘:
@Service("myMovieLister") public class SimpleMovieLister { // ... } @Repository public class MovieFinderImpl implements MovieFinder { // ... }