<context:component-scan/>
該xml配置做用是啓動Spring的組件掃描功能,自動掃描base-package指定的包及其子文件下的java文件,若是掃描到有@controller、@Service、@Repository、@Component等註解的java類,就會將這些類註冊爲bean。指定的包能夠有多個,用分號隔開。
若是指定了<context:component-scan/>就不用指定<context:annotation-config/>,前者包含後者。使用示例以下:
<context:component-scan base-package="com.ouym.base" use-default-filters="false"><!-- base-package 若是多個,用「,」分隔 -->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
base-package指定須要掃描的包,include-filter指定須要掃描的註解,上述配置的意思是掃描com.ouym.base包下的@controller註解的java文件。
而<context:annotation-config/>的實際做用是向spring容器注入如下幾個類:AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 及RequiredAnnotationBeanPostProcessor 四個beanPostProcessor。這些類的做用主要是使一些註解生效,詳細請自行查閱。
<mvc:annotation-driver/>在spring中通常採用@RequestMapping註解來完成映射關係,要想使@RequestMapping註解生效必須向上下文中註冊DefaultAnnotationHandlerMapping和一個AnnotationMethodHandlerAdapter實例,這兩個實例分別在類級別和方法級別處理。而annotation-driven配置幫助咱們自動完成上述兩個實例的注入。該註解要和掃描controller的註解一塊兒放在spring主配置文件。