controller层
@Controller
表明该类是一个控制器类,可以和@RequestMapping
来配合使用拦截请求,如果不注明请求的方式,默认是拦截 get 和 post 请求。如果后端只关注处理数据,返回 json 的话,需要配合@ResponseBody
来使用
而这样的话会导致一个开发一个接口我们需要3个注解来完成,因此我们可以使用@RestController
来替代@Controller
,@RequestMapping
必须指定对应的请求方式,因此有了如下几个注解 | 普通风格 | Rest风格 | | —- | —- | | @RequestMapping(value=“”,method = RequestMethod.GET) | @GetMapping(value =“”) | | @RequestMapping(value=“”,method = RequestMethod.POST) | @PostMapping(value =“”) | | @RequestMapping(value=“”,method = RequestMethod.PUT) | @PutMapping(value =“”) | | @RequestMapping(value=“”,method = RequestMethod.DELETE) | @DeleteMapping(value =“”) |@AutoWired
Spring的自动装配@CrossOrigin
主要是为了解决跨域访问的问题。可以为整个 controller配置启动跨域,也可以在方法级别启用@PathVariable
路径变量,指定变量的获取是从路径中获取的@RequestBody
指定变量的获取是从请求体中获取的@RequestParam
指定变量是以键值对的方式跟在接口后面的
Service层
**@Service**
用来标注业务层组件**@Resource**
@Resource和@Autowired一样都可以用来装配bean,都可以标注字段上,或者方法上。 @resource注解不是spring提供的,是属于J2EE规范的注解。Dao层 持久层
1、@Repository:@Repository注解类作为DAO对象,管理操作数据库的对象。
总得来看,@Component, @Service, @Controller, @Repository是spring注解
注解后可以被spring框架所扫描并注入到spring容器来进行管理
@Component是通用注解,其他三个注解是这个注解的拓展,并且具有了特定的功能。
2、@Transactional: 通过这个注解可以声明事务,可以添加在类上或者方法上。
一般情况是我们会在servcie层添加了事务注解。
事务的开启只能在public方法上
JPA操作数据库的时候,默认只允许查询操作,如果需要对数据进行操作(比如修改或删除),那么需要给servcie层添加事务注解。
3、@RestControllerAdvice 是 @ControllerAdvice 和 @ResponseBody的合集,可以将异常以json的格式返回数据。