需求:insertUser/updateUser/deleteUser 需要开启事务,提交事务,selectUser 不需要(不增强)
切面类代码:
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class UserAspect {
//也可以将&&换成and都是可以使用的
@Before("execution(* com.Operation..*.*()) && !execution(* com.Operation..*.selectUser())")
public void init(){
System.out.println("开启事务");
}
@After("execution(* com.Operation..*.*()) && !execution(* com.Operation..*.selectUser())")
public void destroy(){
System.out.println("提交事务");
}
}
测试类代码:
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = SpringConfiguration.class)
public class Test_demo {
@Resource
UserDao userDao;
@Test
public void run(){
userDao.insertUser();
System.out.println("======================");
userDao.deleteUser();
System.out.println("======================");
userDao.updateUser();
System.out.println("======================");
userDao.selectUser();
}
}
UserDao代码:
@Component
public class UserDao {
public void insertUser(){
System.out.println("插入数据");
}
public void updateUser(){
System.out.println("更新数据");
}
public void deleteUser(){
System.out.println("删除数据");
}
public void selectUser(){
System.out.println("查询数据");
}
}
Spring配置类代码:
@Configuration
@ComponentScan("com.Operation")
@EnableAspectJAutoProxy
public class SpringConfiguration {
}