经验——Lomdom常用注解

1、类上:@Data;当于同时使用了 @Getter 、@Setter 、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode

类上的 @Getter 注解:

将对该类的所有属性都自动生成对应的 getter 方法


mybatisplus注解
2、属性上:
@TableField(value="email")解决对象中字段名和数据库不匹配(没有遵循小驼峰或者完全不匹配)
@Tablefield(exit=false)解决对象中的属性字段在表中不存在的问题
如果数据库中不存在某个字段,但是对象中又必须有这个字段。在某些操作中可能出现一些问题,就可使用此注解忽略此字段;
@TableField(select = false) 
在查询操作中某个字段值不想被查询展示出来(比如密码password),可使用此注解。查询出的password=null
@TableField(fill = FieldFill.INSERT_UPDATE)
表示此字段在修改和新增操作时都更新数据;
1、jackSon中@JsonInclude
@JsonInclude注解的一个更通俗的名称应该是@JsonIncludeOnlyWhen,即告诉Jackson仅在某些情况下包括属性。 例如,仅当属性为非null,非空或具有非默认值时,才应包括该属性。
2、@JsonFormat 注解,该注解的作用是将传入的时间格式化为 注解上指定的格式。
使用@JsonFormat 进行格式化转换时,若未标明时区,则默认为 GMT 时区,年月日转换为date 时,会使用GMT 时区,会多 8 小时。若指定时区 timezone = "GMT+8" ,年月日字符串转换之后会是对应的北京时间的0点0分0秒。
@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")、

@JsonIgnore//一般标记在属性或者方法上,返回的json数据即不包含该属性


swagger 
@Schema(类和字段皆用)用于描述实体类属性的描述、示例、验证规则等,比如 POJO 类及属性。
@Schema(description = "页码", required = true, example = "1")

@ControllerAdvice 和 @RestControllerAdvice 都是 Spring MVC 提供的异常处理机制,它们的作用是一样的,但是它们的返回结果不同。

@ControllerAdvice 是一个类级别的注解,用于定义全局异常处理器,可以在应用程序中的所有控制器方法执行前或执行后进行拦截,提供全局性的异常处理。@ControllerAdvice 中的方法使用 @ExceptionHandler 注解来处理特定类型的异常,它的返回结果可以是一个视图,也可以是一个响应体(ResponseEntity)。

@RestControllerAdvice 同样也是一个类级别的注解,它的作用和 @ControllerAdvice 是一样的,但是它的返回结果都是响应体(ResponseEntity)或者返回值对象,用于构建 Web 服务的响应结果。

简单来说,@ControllerAdvice 用于构建返回视图的响应结果,而 @RestControllerAdvice 用于构建返回 JSON/XML 等数据格式的响应结果,用于构建 Web 服务。

需要注意的是,使用 @RestControllerAdvice 需要确保在应用程序中使用了 Spring MVC 的注解,例如 @RestController,@GetMapping 等。如果应用程序中只使用了 Spring Boot 的注解,例如 @SpringBootApplication,那么使用 @RestControllerAdvice 将没有任何效果。

@ExceptionHandler

@ExceptionHandler 是 Spring MVC 提供的一个注解,用于在控制器中定义方法,以便处理特定类型的异常。

@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    @ExceptionHandler(BindException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public <T> Result<T> processException(BindException e) {

基于Spring的注解开发应用程序时,可以将@Configuration注解标注到某个类上。当某个类被@Configuration注解标注时,说明这个类是配置类,可以在这个类中使用@Bean注解向IOC容器中注入Bean对象,也可以使用@Autowired、@Inject和@Resource等注解来注入所需的Bean对象。

Lombok注解之@RequiredArgsConstructor

  • 类:只能作用在类上
  • 用于生成包含 final 和 @NonNull 注解的成员变量的构造方法
  • @RequiredArgsConstructor
    public class SysDeptController {
        private final SysDeptService deptService;
    
    
    Swagger @Tag 注解的作用是为 API 操作添加一个或多个标签。标签可以在 Swagger UI 中使用,以帮助用户更好地组织和查找 API 操作。
@Operation描述接口作用        

Lombok的@SneakyThrows

java的异常体系中Exception异常有两个分支,一个是运行时异常RuntimeException,一个是编译时异常,在Exception下的所有非RuntimeException异常,比如IOException、SQLException等;所有的运行时异常不捕获,编译时异常是一定要捕获,否则编译会报错。

@SneakyThrows就是利用了这一机制,将当前方法抛出的异常,包装成RuntimeException,骗过编译器,使得调用点可以不用显示处理异常信息。

SpringBoot - @PreAuthorize

@PreAuthorize注解会在方法执行前进行权限验证,支持Spring EL表达式,它是基于方法注解的权限解决方案。

@PreAuthorize("@ss.hasPerm('sys:dept:add')")

其中“sys:dept:add”是要判断的操作权限表达式字符串

swagger @Parameter用于描述参数的介绍

springboot的

@RequestParam绑定请求参数到方法形参,适用key,value的方式,同时适用get、post方法

@RequestParam String username

@PathVariable可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中

@GetMapping("/{deptId}/form")
@PathVariable Long deptId

@RequestBody主要用来接收前端传递给后端的json的数据(只适用post的方式)

@ParameterObject DeptQuery queryParams

@CookieValue用于将请求的Cookie数据映射到功能处理方法的参数上

public String test(@CookieValue(value="JSESSIONID", defaultValue="") String sessionId) 

knife4j替代swagger(使用 OpenAPI3 规范)

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案

Knife4j 完全遵循了 Swagger2 的使用方式,同时还使用了 OpenAPI 3 规范,所以直接使用 Knife4j 就行。

OpenAPI 规范 (中文版) (apifox.cn)

Knife4jInsight | Knife4jInsight

SpringBoot 整合 knfe4j ,使用 OpenAPI3 规范_knife4j openapi_N_007的博客-CSDN博客

@SecurityRequirement 是 knife4j-openapi3-jakarta 中的注解之一,用于标识 API 接口中的安全需求。其中 name 参数指定了安全方案的名称,该名称与 OpenAPI 文档中的安全定义部分对应。

@Operation(summary = "菜单列表",security = {@SecurityRequirement(name = "Authorization")})
@GetMapping
public Result<List<MenuVO>> listMenus( @ParameterObject MenuQuery queryParams) {

@SecurityRequirement(name = "security_scheme_name")

public void apiMethod() { // 方法实现 }

Spring Boot 中的@CacheEvict 注解用于清空缓存。它可以标注在方法上,表示在执行该方法后清空指定的缓存

@CacheEvict(cacheNames = "system", key = "'routes'")
public Result deleteMenu(
  • value:指定要清空的缓存名,与 @Cacheable 或 @CachePut 注解中的 value 属性对应;
  • key:指定要清空的缓存的 key;
  • @Cacheable 注解,表示将获取到的用户信息缓存起来。

@Cacheable(value = "users", key = "#id")

public User getUserById(Long id) {

key 属性可以使用 SpEL 表达式来动态生成,比如 #id 表示使用方法的参数 id 作为 key。

在Spring Boot中,@Validated注解用于验证请求参数。它可以应用在Controller类或方法上

@Valid是使用Hibernate validation的时候使用

@Validated是只用Spring Validator校验机制使用

说明:java的JSR303声明了@Valid这类接口,而Hibernate-validator对其进行了实现

@Validation对@Valid进行了二次封装,在使用上并没有区别,但在分组、注解位置、嵌套验证等功能上有所不同,这里主要就这几种情况进行说明。

注解位置:

@Validated:用在类型、方法和方法参数上。但不能用于成员属性(field)

@Valid:可以用在方法、构造函数、方法参数和成员属性(field)上

Spring Boot中的@MessageMapping注解

@MessageMapping注解可以将该消息路由到对应的处理方法中进行处理。使用方法类似于@RequestMapping注解。

@MessageMapping("/sendToUser/{username}")
public void sendToUser(Principal principal, @DestinationVariable String username, String message) {

@MessageMapping("/hello") @SendTo("/topic/greetings") public Greeting greeting(HelloMessage message) throws Exception {

@MessageMapping("/hello") 注解表示该方法用于处理客户端发送的 /hello 消息。@SendTo("/topic/greetings") 注解表示将返回的消息发送到 /topic/greetings 目的地。

var socket = new SockJS('/gs-guide-websocket');
stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
    stompClient.subscribe('/topic/greetings', function(greeting){
        showGreeting(JSON.parse(greeting.body).content);
    });
});
 

Lombok注解之@SneakyThrows注解是由lombok封装的,为代码生成一个try…catch块,并把异常向上抛出来

使用范围: 只能作用在方法和构造函数之上。

springboot的@Value用于将配置文件中的值注入到属性中

@EnableMethodSecurity 注解的作用是启用 Spring Security 的方法级别的安全性控制功能,并且可以指定使用的安全性配置类。

@PostConstruct 是 Java EE(现在称为 Jakarta EE)和 Spring 框架中的一个注解,用于标记一个方法,在对象创建后(构造函数执行完毕)和依赖注入完成后被自动调用。

使用 @PostConstruct 注解的方法被称为初始化方法,它用于执行对象的初始化逻辑。当创建一个对象并完成依赖注入后,容器会自动寻找被 @PostConstruct 注解标记的方法,并在合适的时机调用它。

1、@Mapper、@MapperScan注解
@Mapper注解:

使用:直接在接口类上使用,包是:org.apache.ibatis.annotations.Mapper

作用:为有此注解的接口生成动态代理类,并且注入到spring容器中。

@MapperScan注解:

使用:在启动类上配置,配置的是持久层接口的包路径,标注批量生成此包下的接口的动态代理类,并且注入到容器中。

3、@Mapper、@MapperScan注解都使用,@Mapper接口,在@MapperScan注解中有配置包路径,那么可以正常使用。

4、@Mapper、@MapperScan注解都使用,@Mapper接口,在@MapperScan注解中没有配置包路径,那么会报错,解决办法,就是在@MapperScan注解中配置正确路径下的包即可。

MybatisPlus中@TableField注解的使用详解

@TableField(exist = false)
private static final long serialVersionUID = 1L;

MyBatis-Plus常用注解_mybatisplus @tablename注解各个属性详解-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值