007 标记注解@Controller

本文详细解析了 Spring MVC 框架中 @Controller 注解的作用原理及其实现方式,介绍了该注解如何帮助类成为控制器,并通过类路径扫描进行自动检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 .概述

  作为spring标准的四个基础组件标示注解,@Controller变成了在springmvc中控制器的标示注解,到底是怎么实现的呢?

  这个是我们需要了解的一个问题,本节,从源码上说一下@Controller注解在springmvc之中的作用.


 

二 .注解的结构  

/** 含有该注解的类的隐含的意思就是该类应该是一个控制器.
 * Indicates that an annotated class is a "Controller" (e.g. a web controller).
 * 表示该注解的类可以被扫描器从classpath之中加载并注册,另外一个作用就是
  完成处理器方法的绑定 * <p>This annotation serves as a specialization of {@link Component @Component}, * allowing for implementation classes to be autodetected through classpath scanning. * It is typically used in combination with annotated handler methods based on the * {@link org.springframework.web.bind.annotation.RequestMapping} annotation. *
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Controller { /** * The value may indicate a suggestion for a logical component name, * to be turned into a Spring bean in case of an autodetected component. * @return the suggested component name, if any (or empty String otherwise) */ String value() default ""; }

我们从文档之中,可以看到@Controller的一个特色作用就是完成处理器方法的绑定工作.


 

三 .@Controller的运行源码  

    protected boolean isHandler(Class<?> beanType) {
        return (AnnotatedElementUtils.hasAnnotation(beanType, Controller.class) ||
                AnnotatedElementUtils.hasAnnotation(beanType, RequestMapping.class));
    }

我们在RequestMappingHandlerMapping之中看到了这一段代码,

  它会判断这个Bean是否是含有一个注解,如果有Controller,就是一个控制器.

  如果不是,含有@RequestMapping也是一个控制器.


 

四 .总结

  我们现在知道了,@Controller为什么比其它的注解拥有更强的功能了

转载于:https://www.cnblogs.com/trekxu/p/9123240.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值