SpringBootがまとめた事務とAOP


一、事務
Spring Bootでは、spring-boot-starter-jdbcまたはspring-boot-starter-data-jpa依存を使用すると、フレームワークがDataSourceTransactionManagerまたはJpaTransactionManagerに自動的にデフォルトでインポートされます.
したがって、@Transactional注釈を使用してトランザクションの使用を行うには、追加の構成は必要ありません.
Spring Bootはトランザクションを使用するのが簡単です.まず、注釈@E n a b l e TransactionManagementを使用してトランザクションサポートを開始した後、データベースにアクセスする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と同等
転載先:https://www.cnblogs.com/jnba/p/10832837.html