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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM