Spring 常用注解
将一个类声明为Spring的 bean :
@Controller:用来标注控制层组件,通过Controller注解标记的类就是一个SpringMVC对象,分发处理器会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping注解,可以把Request请求header部分的值绑定到方法的参数上。
@RestController:相当于Controller注解与ResponseBody的组合效果
@Component:通用的注解,可标注任意类为 Spring 组件。如果一个Bean不知道属于哪个层,可以使用
@Reponsitory:用来标注Dao层,在daoImpl类上注释
@Service:用来标注业务层
其他常用注解:
@ResponseBody:异步请求,该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入Response对象的body区,返回的值不是html页面,而是其他某种格式的数据时使用。
@RequestMapping:一个用来处理请求地址映射的注解,可以作用与类上或方法上,作用于类上标表示类的所有响应请求的方法都是以该地址作为父路径。
@Autowired:可以对类成员变量、方法以及构造函数进行标注,完成自动装配的工作。通过该注解来消除get、set方法。
@PathVariable:用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出url中的变量作为参数
@RequestParam:主要用于在SpringMVC控制层获取参数,类似于request.getParameter(“name”);
@ModelAttribute:该Controller的所有方法在调用前,限制性此方法,可用于注解和方法参数中,可以把这个ModelAttribute特性,应用在BaseController中,所有的Controller继承BaseCotroller,即可实现在调用Controller时,先执行@ModelAttribute方法。
@RestController与@Controller的区别是什么?
Controller 返回一个页面:单独使用 @Controller 不加 @ResponseBody的话一般使用在要返回一个视图的情况,这种情况属于比较传统的Spring MVC 的应用,对应于前后端不分离的情况。
@RestController (等价于@Controller +@ResponseBody)返回JSON 或 XML 形式数据:@RestController只返回对象,对象数据直接以 JSON 或 XML 形式写入 HTTP 响应(Response)中,这种情况属于 RESTful Web服务,这也是目前日常开发所接触的最常用的情况(前后端分离)。
@ResponseBody 注解的作用是将 Controller 的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到HTTP 响应(Response)对象的 body 中,通常用来返回 JSON 或者 XML 数据,返回 JSON 数据的情况比较多。