SpringMVC @Controller注解定义一个控制器

科长
2023-07-04 / 0 评论 / 111 阅读 / 正在检测是否收录...

@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

评论 (0)

取消