前言:
因為SpringBoot操作兩者實在太簡單了,我就放一起來寫了。
正文(事務):
1 /** 2 * springboot中運用事務 3 * 真的超級方便,直接加上注解就ok了,連配置都省了 4 * @return 5 */ 6 @Transactional 7 public int insertDemo() { 8 9 int flag = td.insertDemo("bo", "123456"); 10 flag = td.insertDemo("bo", "123456"); 11 return flag; 12 }
一切盡在不言中。xml文件不用配置,pom文件不用配置,啥都不用配置。直接加上@Transactional注解,超級方便。至於事務的傳播行為,隔離級別我這里就不說了,可以看看我的其他文章。
正文(AOP):
Spring兩大特性IoC和AOP,可見AOP的地位在Spring里面有着舉足輕重的地位。
首先在依賴spring-boot-starter-aop,其次就沒有了,直接用即可。
1 @Aspect 2 @Component 3 public class HttpAspect { 4 5 private final static Logger 6 logger = LoggerFactory.getLogger(HttpAspect.class); 7 8 @Pointcut(value = "execution (public * com.LoginApplication.testMybatis(..))") 9 public void log() { 10 } 11 12 @Before(value = "log()") 13 public void doBefore() { 14 15 logger.info("AOP 前置攔截"); 16 // System.out.println("AOP 前置攔截"); 17 } 18 19 @After(value = "log()") 20 public void doAfter() { 21 22 logger.info("AOP 后置攔截"); 23 // System.out.println(""); 24 } 25 }
5,6行為slf4j的日志打印,不用看即可。8,9行是為了不要重復,建了一個類似模板的東西,里面的value為切面表達式。
第一個 * 代表可以返回任何值,com為包名,LoginApplication為類名,testMybatis為方法名,其中方法名可以用 * 代替,表示代替所有。括號里面的 .. 表示接受任何類型的參數和任何多少的參數。
具體詳情可以看這篇:https://www.cnblogs.com/songshuiyang/p/7857515.html
結果就是每次調用testMybatis這個方法的時候,就會在其前后打印befor,after里面的內容。