本章记载学习SpringMVC时遇到的注解,以及使用方式,不定时更新
- @Controller
- 该注解用于在类的声明上方,表明这是SpringMVC里的Controller,将其声明为一个Spring的Bean,可以被Dispatcher Servlet自动扫描,并将Web请求映射到被@RequestMapping注解的方法上(关于@RequestMapping一会再讲)
- @Service、@Component、@Repository、@Controller都是将类作为一个Bean,具体看语义,功能都不同。
@Target({ElementType.TYPE}) // 该注解能在什么地方进行声明
@Retention(RetentionPolicy.RUNTIME) // 该注解的生存期间
@Documented // 该注释将出现在JavaDoc中
@Component // 该注解为组件,可以被Spring中的类发现器扫描
public @interface Controller {
String value() default "";
}
- @RequestMapping
- 这个注解可以声明在类上,函数上。
- 声明在类上,代表该Controller的WebPath,其内的函数都是在这个WebPath的下一级
- 声明在函数上,代码该方法的WebPath
- 该注解还有好多可以设置的值
- value WebPath,访问路径
- produces 常用来设置返回类型和字符编码
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
String name() default "";
String[] value() default {};
RequestMethod[] method() default {};
String[] params() default {};
String[] headers() default {};
String[] consumes() default {};
String[] produces() default {};
}
- @ResponseBody
- 这个注解可以声明在类上,方法上
- 声明在类上,则代表其内的函数都是返回内容,而不是返回页面路径
- 声明在函数上,则代表该函数返回内容,而不是返回页面路径
- 值得庆幸的是,该注解是空主控,没有可以设置的值。
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ResponseBody {
}