spring基本的mvc示例应用,注释扫描混乱

时间:2010-07-01 01:34:27

标签: spring spring-mvc annotations

有点困惑,基本的春季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 />
  1. 你真的需要两者吗?

  2. 对于组件扫描,这是否意味着如果我没有放入正确的包路径,我的@Controller和@Service标记将无效? 如果我需要多个套餐,我是否只是复制该条目?

  3. 我尝试使用mvc:annotation-driven但是没有用,我不得不将com.example.web.controllers放在component-scan xml节点中以使其工作。

2 个答案:

答案 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)

  1. mvc:annotation-driven允许您配置Spring MVC的行为。详见documentation。有关Spring MVC的基本用法,您不需要它。
  2. 如果您需要多个套餐,请提及父母一个:<context:component-scan base-package="org.springframework.samples.mvc" />