开发者

spring basic mvc sample application, annotation scan confusion

Little confused, the basic spring mvc app has this:

app-config.xml

<context:component-scan base-package="org.springframework.开发者_JS百科samples.mvc.basic" />

and the mvc-config.xml has:

<!-- Configures the @Controller programming model -->
    <mvc:annotation-driven />
  1. Do you really need both?

  2. for component-scan, does this mean if I don't put the correct package path my @Controller and @Service markers will have no effect? If I need more than one package, do I just duplicate the entry?

I tried using just the mvc:annotation-driven but that didn't work, I had to put com.example.web.controllers in the component-scan xml node to make it work.


context:component-scan is clear

Scans the classpath for annotated components that will be auto-registered as Spring beans. By default, the Spring-provided @Component, @Repository, @Service, and @Controller stereotypes will be detected.

So @Controller is just a Spring bean. Nothing else.

And

mvc:annotation-driven

registers the HandlerMapping and HandlerAdapter required to dispatch requests to your @Controllers

Which is similar to

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

If I need more than one package, do I just duplicate the entry?

You can if you want. context:component-scan is just a bean post-processor.

<context:component-scan base-package="br.com.app.view.controller"/>
<context:component-scan base-package="br.com.app.service"/>

Or

Use a comma-separated list of packages to scan for annotated components.

<context:component-scan base-package="br.com.app.view.controller,br.com.app.service"/>


  1. mvc:annotation-driven allows you to configure behavior of Spring MVC. See details in documentation .For basic usage of Spring MVC you do not need it.
  2. If you need more than one package just mention parent one: <context:component-scan base-package="org.springframework.samples.mvc" />
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜