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

  • 相关阅读:
    利用JSON Schema校验JSON数据格式
    爬虫初体验:Python+Requests+BeautifulSoup抓取广播剧
    CSS选择器语法&示例
    Xpath语法&示例
    通过批处理命令for提取数据
    katalon系列十七:报告&Katalon Analytics
    katalon系列十六:代码运行时实时创建元素对象或列表
    PhpStorm 常用插件
    Nginx 配置 https
    Tmux 入门
  • 原文地址:https://www.cnblogs.com/jnba/p/10832837.html
Copyright © 2011-2022 走看看