有点困惑,基本的春季mvc app有这个:
应用-config.xml中
<context:component-scan base-package="org.springframework.samples.mvc.basic" />
并且mvc-config.xml具有:
<!-- Configures the @Controller programming model -->
<mvc:annotation-driven />
你真的需要两者吗?
对于组件扫描,这是否意味着如果我没有放入正确的包路径,我的@Controller和@Service标记将无效? 如果我需要多个套餐,我是否只是复制该条目?
我尝试使用mvc:annotation-driven但是没有用,我不得不将com.example.web.controllers放在component-scan xml节点中以使其工作。
答案 0 :(得分:11)
context:component-scan 是明确的
扫描带注释组件的类路径,将自动注册为Spring beans 。 默认情况下,将检测Spring提供的@Component,@ Repository,@ Service和@Controller构造型。
所以@Controller只是一个Spring bean。没别了。
和
mvc:注释驱动
注册HandlerMapping和HandlerAdapter 以向@Controllers发送请求
类似于
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
如果我需要多个软件包,我是否只是复制条目?
如果你愿意,你可以。 context:component-scan 只是一个bean后处理器。
<context:component-scan base-package="br.com.app.view.controller"/>
<context:component-scan base-package="br.com.app.service"/>
或
使用以逗号分隔的包列表来扫描带注释的组件。
<context:component-scan base-package="br.com.app.view.controller,br.com.app.service"/>
答案 1 :(得分:1)
mvc:annotation-driven
允许您配置Spring MVC的行为。详见documentation。有关Spring MVC的基本用法,您不需要它。<context:component-scan base-package="org.springframework.samples.mvc" />