栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

AOP和权限控制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AOP和权限控制

AOP和权限控制 1.AOP控制

承接上一篇路线

在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层的对事务的控制
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/724118.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号