=====================================================================
- 事务
两种结果:提交 回滚
提交:发生在return
回滚:全回滚 / 回滚到定义的保存点
接口:
public class UserServiceImpl implements UserService {
public void addUser() {
System.out.println(“addUser”);
}
}
测试类:
@Test
public void t3(){
final UserServiceImpl userService=new UserServiceImpl();
/*
-
ClassLoader loader, 一般调用当前类的类加载器
-
Class<?>[] interfaces,
-
InvocationHandler h
-
*/
InvocationHandler handler= new InvocationHandler() {
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println(“开启事务”);
Object object= method.invoke(userService,args);
System.out.println(“关闭事务”);
return object;
}
};
UserService userServiceProxy= (UserService) Proxy.newProxyInstance(Test01.class.getClassLoader(),
UserServiceImpl.class.getInterfaces(),handler );
userServiceProxy.addUser();
}
====================================================================
统一事务处理类:
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/*
-
重写了 BeanPostProcessor
-
配置的方法非常简单,只要配置给容器就可以了
-
*/
public class MyBeanPostProcess implements BeanPostProcessor{
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println(“Before-Initialization”);
System.out.println(bean);
System.out.println(beanName);
return bean;
}
public Object postProcessAfterInitialization(final Object bean, String beanName) throws BeansException {
System.out.println(“After-Initialization”);
if(beanName.equals(“userService” )){
InvocationHandler handler= new InvocationHandler() {
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println(“开启事务”);
Object object= method.invoke(bean,args);
System.out.println(“关闭事务”);
return object;
}
};
// BeanPostProcessor全局生效 需要使用名称进行过滤
return Proxy.newProxyInstance(MyBeanPostProcess.class.getClassLoader(),
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
总结
以上是字节二面的一些问题,面完之后其实挺后悔的,没有提前把各个知识点都复习到位。现在重新好好复习手上的面试大全资料(含JAVA、MySQL、算法、Redis、JVM、架构、中间件、RabbitMQ、设计模式、Spring等),现在起闭关修炼半个月,争取早日上岸!!!
下面给大家分享下我的面试大全资料
- 第一份是我的后端JAVA面试大全
后端JAVA面试大全
- 第二份是MySQL+Redis学习笔记+算法+JVM+JAVA核心知识整理
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
- 第三份是Spring全家桶资料
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
- 第三份是Spring全家桶资料
[外链图片转存中…(img-JOaW4LzG-1711858961797)]
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!