AI智能
改变未来

spring boot空属性赋值问题+aspect日志

空属性赋值问题
MyBeanUtils类

public class MyBeanUtils {public static String[] getNullPropertyNames(Object source){BeanWrapper beanWrapper=new BeanWrapperImpl(source);PropertyDescriptor[] pds=beanWrapper.getPropertyDescriptors();List<String> nullPropertyNames=new ArrayList<>();for (PropertyDescriptor pd:pds){String propertyName=pd.getName();if(beanWrapper.getPropertyValue(propertyName)==null){nullPropertyNames.add(propertyName);}}return nullPropertyNames.toArray(new String[nullPropertyNames.size()]);}}

在NewServiceImpl中对updateNew方法进行修改

@Overridepublic News updateNew(Long id, News news) {News news1=newRepository.findById(id).orElse(null);if(news1==null){//     System.out.println(\"未获得更新对象\");throw new NotFoundException(\"该新闻不存在\");}//更新后传入的news复制给news1,查找更新数据news中空值属性,忽略不复制给news1BeanUtils.copyProperties(news,news1, MyBeanUtils.getNullPropertyNames(news));news1.setUpdateTime(new Date());return newRepository.save(news1);}

日志打印
新建一个LogAspect类

@Aspect@Componentpublic class LogAspect {private final Logger logger= LoggerFactory.getLogger(this.getClass());@Pointcut(\"execution(* com.zr0726.news.web.*.*(..))\")public void log(){}@Before(\"log()\")public void doBefore(JoinPoint joinPoint){//获得requestServletRequestAttributes attributes=(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request=attributes.getRequest();//获得url和ipString url=request.getRequestURL().toString();String ip=request.getRemoteAddr();String classMethod=joinPoint.getSignature().getDeclaringTypeName()+\".\"+joinPoint.getSignature().getName();Object[] args=joinPoint.getArgs();Requestlog requestlog=new Requestlog(url,ip,classMethod,args);logger.info(\"_____________________doBefore_______________________\");}@After(\"log()\")public void doAfter(){logger.info(\"_____________________doAfter_______________________\");}@AfterReturning(returning = \"result\",pointcut = \"log()\")public void adAfterReturn(Object result){logger.info(\"Result: {}\",result);}private class Requestlog{private String url;private String ip;private String classMethod;private Object[] args;public Requestlog(String url, String ip, String className, Object[] args) {this.url = url;this.ip = ip;this.classMethod = className;this.args = args;}@Overridepublic String toString() {return \"Requestlog{\" +\"url=\'\" + url + \'\\\'\' +\", ip=\'\" + ip + \'\\\'\' +\", classMethod=\'\" + classMethod + \'\\\'\' +\", args=\" + Arrays.toString(args) +\'}\';}}}

效果展示

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » spring boot空属性赋值问题+aspect日志