当前位置: 首页 > news >正文

最适合seo的网站源码永川网站开发

最适合seo的网站源码,永川网站开发,龙之向导官网,三亚网红路Transactional注解 Spring使用了TransactionInterceptor拦截器#xff0c;该拦截器主要负责事务的管理#xff0c;包括开启、提交、回滚等操作。当在方法上添加Transactional注解时#xff0c;Spring会在AOP框架中对该方法进行拦截#xff0c;TransactionInterceptor会在该…Transactional注解 Spring使用了TransactionInterceptor拦截器该拦截器主要负责事务的管理包括开启、提交、回滚等操作。当在方法上添加Transactional注解时Spring会在AOP框架中对该方法进行拦截TransactionInterceptor会在该方法执行前后对事务进行切面处理Spring会基于该类生成一个代理对象把这个代理对象作为bean。当调用这个代理对象的方法时如果有事务处理则会先关闭事务的自动功能然后执行方法的具体业务逻辑如果业务逻辑没有异常那么代理逻辑就会直接提交如果出现任何异常那么直接进行回滚操作。 事务管理器 Spring还提供了多种事务管理器包括JDBC事务管理器、Hibernate事务管理器、JTA事务管理器等等可以满足不同数据访问层的需求。事务通知是Spring事务机制中的一个重要组成部分主要用于判断哪些方法需要被事务管理以及如何管理事务。 Spring事务底层实现原理 应用启动时会创建一个代理类把事务逻辑织入到代理类中然后用代理类替代目标类并放入上下文容器中。当实际调用目标类的事务方法时被代理类拦截先执行拦截器中的事务逻辑再执行目标类的业务逻辑最后处理异常回滚和提交。这样就能实现简单、方便、可控的事务管理。 示例代码 这里给出一个简单的示例代码 定义一个接口包含需要进行事务管理的方法 public interface UserService {void addUser(User user);void deleteUser(String id);void updateUser(User user);User getUser(String id); }实现这个接口的目标类 public class UserServiceImpl implements UserService {Overridepublic void addUser(User user) {//添加用户的业务逻辑}Overridepublic void deleteUser(String id) {//删除用户的业务逻辑}Overridepublic void updateUser(User user) {//更新用户的业务逻辑}Overridepublic User getUser(String id) {//查询用户的业务逻辑return null;} }定义一个事务拦截器类 /*** TransactionInterceptor 是一个实现了 MethodInterceptor 接口的拦截器类*/ public class TransactionInterceptor implements MethodInterceptor {/*** TransactionManager 对象用于管理事务*/private TransactionManager txManager;/*** 用于注入 TransactionManager 对象* param txManager TransactionManager 对象*/public void setTxManager(TransactionManager txManager) {this.txManager txManager;}/*** 实现 MethodInterceptor 接口的 invoke 方法用于拦截指定方法* param invocation MethodInvocation 对象用于获取被拦截的方法及其参数* return 执行方法的返回结果* throws Throwable 抛出异常*/Overridepublic Object invoke(MethodInvocation invocation) throws Throwable {Object result;try {// 开启事务txManager.start();// 执行被拦截的方法并获取方法执行的返回结果result invocation.proceed(); // 提交事务txManager.commit();} catch (Exception e) {// 回滚事务txManager.rollback();throw e;}return result;} }定义一个上下文容器类 public class ApplicationContext {private MapString, Object beanMap new HashMap(); // 用于存放bean的map// 注册beanpublic void registerBean(String name, Object bean) {beanMap.put(name, bean); // 将bean存放到map中}// 获取beanpublic Object getBean(String name) {Object bean beanMap.get(name); // 从map中获取beanif (bean instanceof Advised) { // 如果bean是Advised类型说明使用了AOPreturn ((Advised)bean).getTargetSource().getTarget(); // 返回目标对象}return bean; // 返回原始对象} }在应用启动时创建一个代理工厂类使用上述事务拦截器对目标类进行代理 /*** 代理工厂类用于创建代理对象*/ public class ProxyFactory {/*** 创建代理对象* param target 目标对象需要被代理的对象* param interceptor 事务拦截器代理对象需要加入该拦截器* return 返回代理对象*/public static Object createProxy(Object target, TransactionInterceptor interceptor) {DefaultAopProxyFactory proxyFactory new DefaultAopProxyFactory();AdvisedSupport advisedSupport new AdvisedSupport();advisedSupport.setTarget(target); // 设置目标对象advisedSupport.addAdvice(interceptor); // 添加事务拦截器return proxyFactory.createAopProxy(advisedSupport).getProxy(); // 创建代理对象并返回} }然后在应用启动时创建容器并注册代理类 public class Main {public static void main(String[] args) {ApplicationContext context new ApplicationContext();UserService target new UserServiceImpl(); //创建目标类TransactionInterceptor interceptor new TransactionInterceptor();interceptor.setTxManager(new TransactionManager()); //设置事务管理器UserService proxy (UserService) ProxyFactory.createProxy(target, interceptor); //创建代理类context.registerBean(userService, proxy); //注册代理类到上下文容器中//使用代理类进行业务操作User user new User();context.getBean(userService).addUser(user);} }这样当执行代理类的方法时就会先执行事务拦截器中的事务逻辑再执行目标类的业务逻辑。如果出现异常会进行回滚。这样就实现了简单、方便、可控的事务管理。
http://www.zqtcl.cn/news/835261/

相关文章:

  • 企业网站优化报价自己做个网站怎么赚钱
  • 做ui的网站有哪些网站建设订单模板
  • 重庆企业网站优化wordpress 接收询盘
  • 小米4路由器可以做网站嘛杭州淘宝代运营公司十大排名
  • 枞阳做网站的百度搜索入口
  • 网站建设提议徐州网站建设方案咨询
  • 昆明高端网站建设专门做游轮的网站
  • 教育培训网站抄袭网站是广西住房和城乡建设厅
  • 广州做网站建设的公司哪家好网站建设运营公司
  • 网站集约化建设 技术国内永久在线免费建站
  • 极简资讯网站开发有什么免费推广项目的好软件
  • 网站有哪几种类型如何让百度分享按钮在网站每个页面都有
  • 北京市昌平建设工程招标网站网站建设要学哪些软件有哪些方面
  • 部队内网网站建设方案诱导视频网站怎么做
  • 安徽省美好乡村建设网站郑州网站建设 论坛
  • 手机网站怎么建设软件外包公司绩效考核内容
  • 北京最大的火车站网站免费推广方式
  • 外贸网站建设系统工程公司名称大全
  • 手机视频网站建站吴江区经济开发区建设工程网站
  • 网站建设存在哪些问题学校网站手机站的建设
  • 婚恋网站设计手机免费制作网站模板
  • 北京网站建设与维护公司网络组建方案设计
  • 自己做网站好还是凡科樱花动漫做网站
  • 自己做外贸开通什么网站wordpress万能主题
  • 网站建设中添加图片链接cad线下培训班
  • 网站建站系统程序长宁区网站建设网站制
  • 合肥网站建设合肥做网站wordpress 关于页面
  • 软件开发公司赚钱吗北京网站优化解决方案
  • 泰安的网站建设公司哪家好国外ps网站
  • 网站建设制作方案做字典网站开发