@Controller
注解当他标注在类的上方就表明了一个类作为控制器的角色而存在。Spring不要求你去继承任何控制器基类,也不需要去实现Servlet的那套API,如果你想去实现也是可以的
@Controller
注解可以认为是被标注类的原型(stereotype),表明这个类所承担的角色。分派器(dispatcherServlet)会扫描所有注解了@Controller
的类,并检测其中被@RequestMapping
注解配置的方法
当然,你也可以不使用@Controller
注解而显式地去定义被注解的bean,这点通过标准的Spring bean的定义方式,在dispather的上下文属性下配置即可做到。但是@Controller
原型是可以被框架自动检测的,Spring支持classpath路径下组件类的自动检测,以及对已定义bean的自动注册
@Controller
public class DemoController {
.....
}
如果想要开启自动对控制器注解的自动检测,需要在spring-context.xml
中开启注解扫描
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 扫描并加载此包下的所有被@Controller注解的类 <-->
<context:component-scan base-package="org.springframework.samples.controller"/>
<!-- ... -->
</beans>
评论 (0)