发表于: 2020-06-10 23:53:43

3 1616


今天完成的事情:仔细研究了下垂纶小室,然后设计了数据库表结构,做了Aspectj在service打日志。
明天计划的事情:任务三的数据库设计和接口设计,service等具体方案实现,要写什么方法,加日志,事务回滚等,然后就是深度思考。
遇到的问题:小问题就是我的log4j前面没有深入了解配置导致没有输出到文件,我解决了。

                     然后需要师兄注意看下数据库表分析的有没有问题。
收获:

Service层利用Aspectj打日志

1.首先会用到Spring AOP,AOP详细内容我前面日志学习过,就简单说步骤了,要导入spring的依赖包,还有Aspectj联盟的包,我用的是注解开发,开启注解扫描,以及自动代理。

<context:component-scan base-package="com.hyx.springmvc"/>
<!--开启Aspectj自动代理-->

<aop:aspectj-autoproxy/>

2.配置通知类,并且配置注解织入到对应的类中

ProceedingJoinPoint

Around要使用ProceedingJoinPoint这个参数。其中里面的proceed()方法就是将控制权交给被通知的方法。如果你忘记调用这个方法,那么你的通知实际上会阻塞对被通知方法的调用。

@Component
@Aspect
public class LoggingAspectj {
   @Pointcut("execution(* com.hyx.springmvc.service.StudentService.find(..))")
   private void serviceAspectj(){}
   @Pointcut("execution(* com.hyx.springmvc.service.StudentService.*(..))")
   private void serviceAspectj2(){}

   @Around(value = "serviceAspectj()")
   public Object log1(ProceedingJoinPoint JoinPoint) throws Throwable{
       Logger log = LogManager.getLogger(LoggingAspectj.class);
       //JoinPoint.getTarget()获得目标对象
       String className = JoinPoint.getTarget().getClass().getName();//获得目标对象的类的类名
       //JoinPoint.getSignature()获得方法的签名对象,然后getName()获得方法名
       String methodName = JoinPoint.getSignature().getName();
       log.info("开始执行{}{}方法",className,methodName);
       long startTime = System.currentTimeMillis();
       Object object = JoinPoint.proceed();
       long endTime = System.currentTimeMillis();
       log.info("方法执行时间"+(endTime-startTime));
       return object;
   }
   @AfterThrowing(throwing = "e",pointcut = "serviceAspectj2()")
   public void log2(JoinPoint JoinPoint,Throwable e) {
       Logger log = LogManager.getLogger(LoggingAspectj.class);
       //JoinPoint.getTarget()获得目标对象
       String className = JoinPoint.getTarget().getClass().getName();//获得目标对象的类的类名
       //JoinPoint.getSignature()获得方法的签名对象,然后getName()获得方法名
       String methodName = JoinPoint.getSignature().getName();
       log.info("开始执行{}{}方法",className,methodName);
       //错误的日志记录
       log.info(e.getMessage());
   }

}

任务三任务需求解析,实体表,关系表分析

后端开发一共有6大模块,19个需求。但是目前应该不能完全实现,像后台管理模块和搜索模块,登录模块还没有涉及,按照任务三要求并结合自己的规划,时间上也不允许。现在能够完成的是,留言管理模块,内容管理模块,bannar管理模块,导航页模块。

数据库表





返回列表 返回列表
评论

    分享到