<mvc:annotation-driven />意味着您可以定义spring
Bean依赖项,而无需实际在XML中指定一堆元素或实现接口或扩展基类。例如
@Repository,告诉spring一个类是Dao,而不必扩展
JpaDaoSupport或扩展DaoSupport的其他子类。类似地
@Controller告诉spring,指定的类包含将处理Http请求的方法,而无需实现Controller接口或扩展实现Controller的子类。
当spring启动时,它会读取其XML配置文件,并
<bean在其中看到类似
<bean />Foo的标记,并且在其中查找元素,
@Controller并知道该类是控制器并将其视为此类。默认情况下,Spring假定它应管理的所有类均在beans.XML文件中明确定义。
使用组件扫描
<context:component-scan base-package="com.mycompany.maventestwebapp"/>告诉Spring,它应该在com.mycompany.maventestweapp下的所有类中搜索类路径,并查看每个类是否具有
@Controller,或
@Repository,或
@Service,
@Component如果存在,则Spring将使用该类注册该类。
Bean工厂,就像您输入
<bean />XML配置文件一样。
在典型的spring MVC应用程序中,您会发现有两个spring配置文件,一个配置应用程序上下文的文件通常从Spring上下文侦听器开始。
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
而且,Spring MVC配置文件通常从Spring调度程序Servlet开始。例如。
<servlet> <servlet-name>main</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>main</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
Spring支持分层bean工厂,因此对于SpringMVC,调度程序servlet上下文是主要应用程序上下文的子级。如果向Servlet上下文请求了一个名为“abc”的bean,它将首先在servlet上下文中查找,如果在servlet上下文中找不到它,它将在父上下文(即应用程序上下文)中查找。
通用bean(例如数据源,JPA配置,业务服务)在应用程序上下文中定义,而MVC特定的配置不与servlet关联的配置文件。
希望这可以帮助。



