关注我,持续给您带来简单,实用的Java编程技巧。
本片包含以下注解:@log、@Builder、@SneakyThrows、@Synchronized
@log
作用范围:类
作用:自动生成I一个以当前类名命名的Logger对象
属性:
topic,Logger的名字,默认是当前类名
同类注解还有:@CommonsLog,@JBossLog,@Log4j,@Log4j2,@Slf4j,@XSlf4j
@CommonsLog
private static final org.apache.commons.logging.Log log =
org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@JBossLog
private static final org.jboss.logging.Logger log =
org.jboss.logging.Logger.getLogger(LogExample.class);
@Log
private static final java.util.logging.Logger log =
java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j
private static final org.apache.log4j.Logger log =
org.apache.log4j.Logger.getLogger(LogExample.class);
@Log4j2
private static final org.apache.logging.log4j.Logger log =
org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@Slf4j
private static final org.slf4j.Logger log =
org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j
private static final org.slf4j.ext.XLogger log =
org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
完整示例代码
package com.bbzd.mws.aop;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
/**
* @author Wangjzh
* @date 2022/10/12 - 10:12
*/
@Component
@Aspect
@Slf4j
public class RequestParameterAOP {
@Pointcut("execution (* com.bbzd.mws.service.*Service.*(..))")
public void methodArgs(){}
@Around("methodArgs()")
public Object invoke(ProceedingJoinPoint joinPoint) throws Throwable{
Object result;
result=joinPoint.proceed();
//因为有@Slf4j,下面语句中的log可以不用声明,直接使用
log.info("切入方法已执行1");
return result;
}
}
@Builder
作用范围:类
作用:为类生成建造者模式代码
配套注解:
@AllArgsConstructor,必须要有,没有报错
@Singular,对集合类属性可以单个赋值,默认属性名要以“s”结尾,也可以指定赋值方法名@Singular(“赋值方法名”)
package com.hyyj.practice.lombok;
import com.sun.istack.internal.NotNull;
import lombok.*;
import java.util.Set;
/**
* Lombok测试用Bean
* @author Wangjzh
* @date 2022/10/25 - 15:52
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class User {
private String name;
private Integer age;
@Singular
private Set<String> skills;
}
package com.hyyj.practice.lombok;
/**
* @author Wangjzh
* @date 2022/10/26 - 22:41
*/
public class ConstructorTest {
public static void main(String[] args) {
User u=User.builder()
.name("崔哥")
.age(18)
.skill("吃")
.skill("喝")
.skill("玩")
.skill("乐")
.build();
System.out.println(u);
}
}
结果
User(name=崔哥, age=18, skills=[吃, 喝, 玩, 乐])
@SneakyThrows
作用范围:方法
作用:捕获方法中的异常并抛出
感觉没什么用,先不管了
@Synchronized
作用范围:类方法或实例方法
作用:好像是上锁用的,锁没怎么接触过,不研究了
结束语
- 至此,Lombok的系列文章就告以段落了,感谢看到最后的朋友,更感谢关注,点赞,评论,转发的小伙伴。
- 碍于经验所限,写得不是很全面和详细,文章中总结出来的都是我个人学习过程中感觉简单,实用的点。后面要是发现其它好用,实用的东西,会再开新的文章记录和分享。关注我,帮您及时收到后续的更新和我其它的文章。
本文介绍了Lombok的四个注解:@log用于自动生成Logger对象,@Builder实现建造者模式,@SneakyThrows捕获并抛出异常,@Synchronized提供同步锁功能。详细阐述了每个注解的作用、适用范围和相关属性。
7363

被折叠的 条评论
为什么被折叠?



