承接上一篇路线
在pom文件中导入依赖
org.springframework.boot spring-boot-starter-aop
编写AOP类
@Aspect @Component public class LogAspect { //com/example/demo08aoptransactional/Controller @Pointcut("execution(public * com.example.demo08aoptransactional.Controller.*.*(..))") public void webLog(){} // @Before("webLog()") public void beforeprintLog(){ System.out.println("Logger方法开始记录日志了..."); } // @AfterReturning("webLog()") public void afterReturningPrintLog(){ System.out.println("Logger方法结束记录日志了..."); } // @AfterThrowing("webLog()") public void afterThrowingPrintLog(){ System.out.println("Logger方法错误记录日志了..."); } // @After("webLog()") public void afterPrintLog(){ System.out.println("Logger最终通知"); } //环绕通知,环绕增强,相当于MethodInterceptor @Around("webLog()") public Object arround(ProceedingJoinPoint pjp) { System.out.println("方法环绕start....."); try { Object o = pjp.proceed(); System.out.println("方法环绕proceed,结果是 :" + o); return o; } catch (Throwable e) { e.printStackTrace(); return null; }finally { System.out.println("方法环绕结束,提交事务"); } } }
这样我们springboot的通知管理就ok了
权限管理首先来看我们的sql语句
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GMWHgG15-1643428091554)(C:Users86157AppDataLocalTemp1643427864655.png)]
javabean类
@Data public class Account implements Serializable { private Integer id; private String name; private Double money; }
Mapper类
@Repository @Mapper//标注会对其进行扫描 public interface FirstDao { @Select("select * from account where id = #{id}") Account findById(Integer id); @Update("update account set money = #{money} where id = #{id}") void updatemoney(Account account); }
service类
@Service @Transactional//开启事务控制 public class FirstServiceimpl implements FirstService{ @Autowired FirstDao firstDao; @Override public void transfer(Integer A, Integer B) { Account a = firstDao.findById(A); Account b = firstDao.findById(B); a.setMoney(a.getMoney()-100); b.setMoney(b.getMoney()+100); System.out.println(a); System.out.println(b); firstDao.updatemoney(b); int e = 10/0; firstDao.updatemoney(a); } }
测试方法
@Test void testService(){ firstService.transfer(2,3); }
@Transactional//开启事务控制
rstDao.updatemoney(a);
}
}
测试方法
@Test
void testService(){
firstService.transfer(2,3);
}
@Transactional//开启事务控制 我们通过这一个注解就实现了在service层的对事务的控制
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)