6
【对线面试官】今天来聊聊Java注解
source link: https://mp.weixin.qq.com/s?__biz=MzU4NzA3MTc5Mg%3D%3D&mid=2247483821&idx=1&sn=e9003410a8d3c8a092de0c4d2002bedd&scene=21%23wechat_redirect
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
【对线面试官】今天来聊聊Java注解
Original
3y
对线面试官
2020-12-21
收录于话题
#对线面试官
38个内容
public void send(String userName) {
try {
// qps 上报
qps(params);
long startTime = System.currentTimeMillis();
// 构建上下文(模拟业务代码)
ProcessContext processContext = new ProcessContext();
UserModel userModel = new UserModel();
userModel.setAge("22");
userModel.setName(userName);
//...
// rt 上报
long endTime = System.currentTimeMillis();
rt(endTime - startTime);
} catch (Exception e) {
// 出错上报
error(params);
}
}
@Around("@annotation(com.sanwai.service.openapi.monitor.Monitor)")
public Object antispan(ProceedingJoinPoint pjp) throws Throwable {
String functionName = pjp.getSignature().getName();
Map<String, String> tags = new HashMap<>();
logger.info(functionName);
tags.put("functionName", functionName);
tags.put("flag", "done");
monitor.sum(functionName, "start", 1);
//方法执行开始时间
long startTime = System.currentTimeMillis();
Object o = null;
try {
o = pjp.proceed();
} catch (Exception e) {
//方法执行结束时间
long endTime = System.currentTimeMillis();
tags.put("flag", "fail");
monitor.avg("rt", tags, endTime - startTime);
monitor.sum(functionName, "fail", 1);
throw e;
}
//方法执行结束时间
long endTime = System.currentTimeMillis();
monitor.avg("rt", tags, endTime - startTime);
if (null != o) {
monitor.sum(functionName, "done", 1);
}
return o;
}
文章以纯面试的角度去讲解,所以有很多的细节是未铺垫的。
比如说反射、.java文件
到jvm的过程、AOP是什么等等等基础...这些在【Java3y】都有过详细的基本教程甚至电子书,我就不再详述了。
注解可以把它当做是配置的载体,可能在运行时、可能在编译过程中解析注解,实现些方便好用的功能。
欢迎关注我的微信公众号【面试造火箭】来聊聊Java面试添加我的微信【sanwaiyihao】进一步交流和学习
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK