怎样去理解@ComponentScan注解

在Spring mvc当中经常可以看到@ComponentScan这个注解,

那么怎么样去理解它呢?

1.配置视图控制器

package com.apress.prospringmvc.bookstore.web.config; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration @EnableWebMvc @ComponentScan(basePackages = { "com.apress.prospringmvc.bookstore.web" }) public class WebMvcContextConfiguration extends WebMvcConfigurerAdapter { @Override public void addViewControllers(final ViewControllerRegistry registry) { registry.addViewController("/index.htm").setViewName("index"); } }

2.基于注解的Controller

package com.apress.prospringmvc.bookstore.web; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class IndexController { @RequestMapping(value = "/index.htm") public ModelAndView indexPage() { return new ModelAndView(“index"); } }

那么对于配置的视图控制器加了

@Configuration 和@ComponentScan注解背后会做什么呢?


其实很简单,@ComponentScan告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并且装入bean容器。

例如,如果你有个类用@Controller注解标识了,那么,如果不加上@ComponentScan,自动扫描该controller,那么该Controller就不会被spring扫描到,更不会装入spring容器中,因此你配置的这个Controller也没有意义。

类上的注解@Configuration 是最新的用注解配置spring,也就是说这是个配置文件,和原来xml配置是等效的,只不过现在用java代码进行配置了 加上一个@Configuration注解就行了,是不是很方便,不需要那么繁琐的xml配置了,这样基于注解的配置,可读性也大大增高了。



你可能感兴趣的:(java)