zoukankan      html  css  js  c++  java
  • SpringBoot总结之事务和AOP

    一、事务

    在Spring Boot中,当我们使用了spring-boot-starter-jdbc或spring-boot-starter-data-jpa依赖的时候,框架会自动默认分别注入DataSourceTransactionManager或JpaTransactionManager。

    所以我们不需要任何额外配置就可以用@Transactional注解进行事务的使用。

    spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactional 便可。如果在类上加@Transactional,则整个类都支持事务。

    @Test
        @Transactional
        public void test() {
            Rdb r1 = rdbDao.findById("2");  
            Rdb r2 = rdbDao.findById("3");
            r2.setAge(r2.getAge()+2);
            r1.setAge(r1.getAge()-2);
            rdbDao.save(r1);
            rdbDao.save(r2);
     
        }

    二、AOP

    SpringBoot提供了强大AOP支持,AOP切面主要是切方法,我们一般搞一些日志分析和事务操作,要用到切面,类似拦截器;

    AOP主要注解

    @Aspect注解是切面注解类

    @Pointcut切点定义

    @Before是方法执行前调用

    @After是方法执行后调用

    @AfterReturning方法执行返回值调用

    @Aspect
    @Component
    public class AspectTest {
     
        @Pointcut("execution(public * top.ruandb.controller.*.*(..))")
        public void doTest() {}
         
        @Before("doTest()")
        public void doBefore() {
            System.out.println("do before");
            ServletRequestAttributes sra=(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            HttpServletRequest request=sra.getRequest();
            System.out.println("url:"+request.getRequestURI());
            System.out.println("ip:"+request.getRemoteHost());
        }
         
        @After("doTest()")
        public void doAfter() {
            System.out.println("do after");
        }
         
        @AfterReturning("doTest()")
        public void doAfterReturning() {
            System.out.println("do AfterReturning");
        }
    }

    三、springboot注解小结

    @RestController:相当与@Controller @ResponseBody一起使用

    @RequestMapping:注解提供路由信息。

    @Configuration:等价与原来XML中配置beans;用@Bean标注方法等价于XML中配置bean。

    @SpringBootApplication:等同于@Configuration @EnableAutoConfiguration @ComponentScan

  • 相关阅读:
    SpringMVC核心分发器DispatcherServlet分析[附带源码分析]
    SpringMVC异常处理机制详解[附带源码分析]
    SpringMVC重定向视图RedirectView小分析
    容器中使用iptables报错can't initialize iptables table Permission denied (you must be root)
    nohup介绍
    docker创建ceph集群
    maven单元测试设置代理
    Kubernetes服务之“运行单实例的有状态服务”
    关闭chrome浏览器的developer tools
    Kubernetes服务之StatefulSets简介
  • 原文地址:https://www.cnblogs.com/jnba/p/10832837.html
Copyright © 2011-2022 走看看