文章目录
- Springboot相关注解
- @EnableAspectJAutoProxy(exposeProxy = true)
- 内部实现机制
- @EnableTransactionManagement
- @ServletComponentScan
- @MapperScan(basePackages = {"com.xxx.mapper"})
- @ComponentScan(basePackages={"*"})
- lombok @Data注解
- Controller中的相关注解
- @Controller
- @RestController
- @RequestMapping
- @ResponseBody
- @RequestBody
- @RequestParam
- @PathVariable
- @Validated
Springboot相关注解
@EnableAspectJAutoProxy(exposeProxy = true)
用于启用AspectJ自动代理功能的注解。它通常与Spring AOP一起使用,以在Spring应用程序中实现切面功能。
内部实现机制
当我们在配置类上添加@EnableAspectJAutoProxy注解时,Spring会通过@Import注解导入AspectJAutoProxyRegistrar类。
AspectJAutoProxyRegistrar类实现了ImportBeanDefinitionRegistrar接口,该接口允许开发人员动态地注册Bean定义。在AspectJAutoProxyRegistrar类中,它会注册一个名为AnnotationAwareAspectJAutoProxyCreator的Bean,这个Bean是Spring AOP的核心组件之一。
AnnotationAwareAspectJAutoProxyCreator是一个Bean后置处理器(BeanPostProcessor),它会在Spring容器初始化Bean之后对其进行处理。如果该Bean匹配某个切点表达式,AnnotationAwareAspectJAutoProxyCreator会为其创建一个代理对象,并将切面逻辑织入到该代理对象中。
@EnableTransactionManagement
用于启用基于注解的事务自动管理,可以在方法上添加@Transactional注解来声明事务。当你在配置类上使用 @EnableTransactionManagement 注解时,Spring框架会自动扫描带有 @Transactional 注解的方法,并在这些方法周围织入事务管理的逻辑。如果一个带有 @Transactional 注解的方法执行过程中出现了异常,Spring会自动回滚事务。这个注解的作用是简化事务管理的配置和使用,提高开发效率。
https://blog.csdn.net/Tanganling/article/details/134378603
@SpringBootApplication
@ServletComponentScan
用于启用对servlet组件的扫描,servlet三大组件 Servlet、Filter、Listener 在传统项目中需要在 web.xml 中进行相应的配置,spring使用三个注解@WebServlet、@WebFilter、@WebListener 写在对应的 Servlet、Filter、Listener 类上作为标识,从而不需要在 web.xml 中进行配置了。
但Springboot默认不对这三个注解进行扫描,需要在配置类上增加@ServletComponentScan这个注解。
@MapperScan(basePackages = {“com.xxx.mapper”})
用于开启Mybatis,
https://blog.csdn.net/qq_42187215/article/details/132650985
@ComponentScan(basePackages={“*”})
lombok @Data注解
通过注解的方式在编译期自动生成getter、setter方法、toString方法、equals方法和hashCode方法等常用方法,从而减少模板代码的编写。@Data注解是Lombok提供的一个复合注解,它结合了@Getter、@Setter、@ToString、@EqualsAndHashCode等多个注解的功能,使得开发者可以更加专注于业务逻辑的实现,而不是重复编写一些通用的代码。
Controller中的相关注解
@Controller
控制层注解,标识在类上,返回view
@RestController
同@Controller,返回json数据
@RequestMapping
标识在类或者方法上,表示访问地址,提供路由信息,URL和Controller的映射,是@GetMapping/@PostMapping
的Get/Post的集合。
@GetMapping(value = “hello”) 等价于@RequestMapping(value = “hello”, method = RequestMethod.GET)
@ResponseBody
该注解的作用是将方法的返回值,以特定的格式写入到response的body区域,进而将数据返回给客户端。
当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。
如果返回值是字符串,那么直接将字符串写到客户端;如果是一个对象,会将对象转化为json串,然后写到客户端。
@Controller+@ResponseBody等于@RestController。
@RequestBody
作用于方法参数上,将请求参数绑定到request body中,通过HttpMessageConverter封装为具体的JavaBean。通俗点讲就是你在一个参数上加上该注解,spring就会将request body中的json/xml对象解析成该参数类型的Javabean对象。
@RequestParam
作用于方法参数上,将请求参数映射成指定类型
@PathVariable
作用于方法参数上,通过解析url中的占位符进行参数获取
@Validated
作用在类、方法和参数上,对传输的参数进行数据校验的注解实现对数据的约束,结合以下注解完成对数据的约束