- spring嵌套使用aop
卤蛋x001
java
((UmeDALApollo)AopContext.currentProxy()).getDecrypt(jdbcBeans);使用AopContext.currentProxy()包装一下
- 解决:同一个类中方法调用,导致@Transactional失效(AopContext.currentProxy())
怪力乌龟
Java菜鸡笔记javajavaspringboot数据库
我前面有一个文章讲了当调用本类方法时,被调用方法的@Transactional注解会失效,所以建议大家用编程式事务。Spring/SpringBoot实现编程式事务然而今天,自己推翻我自己,分享一个怎么在调用当前类带有事务注解的方法时,还能强制使事务生效的方式。((YourClass)AopContext.currentProxy()).withTransactionMethod(keyword)
- springboot方法嵌套导致事务失效如何解决?
雷魂香屁
java
//通过AopContext.currentProxy()拿到代理对象((Service)AopContext.currentProxy()).具体的方法
- Spring(17) AopContext.currentProxy() 类内方法调用切入
ACGkaka_
Springspringjava后端
目录一、简介二、代码示例2.1接口类2.2接口实现类2.3AOP切面类2.4启动类(测试)2.5执行结果一、简介背景:在之前Spring的AOP用法中,只有代理的类才会被切入。例如:我们在Controller层调用Service的方式时,是可以被切入的。但是如果我们在Service层A方法中,调用B方法,切点切的是B方法,那么这时候是不会被切入的。解决方案如标题所示,可以使用AopContext.
- 同一个类中方法调用事务生效问题测试
粑粑八成
tips:Transactional注解必须用在public方法上springaop依赖于aspectjweaver使用AopContext.currentProxy必须在启动类上加@EnableAspectJAutoProxy(exposeProxy=true)同一个类调用不生效的情况如下@ComponentpublicclassTestService{@AutowiredJdbcTemplat
- 117、哪些情况下会导致Spring事务失效,对应的原因是什么?
飞翔的佩奇
spring数据库事务AOP面向切面动态代理CGLIB
哪些情况下会导致Spring事务失效,对应的原因是什么?方法内的自调用:Spring事务是基于AOP的,只要使用代理对象调用某个方法时,Spring事务才能生效,而在一个方法中调用使用this.xxx()调用方法时,this并不是代理对象,所以会导致事务失效。a.解放办法1:把调用方法拆分到另外一个Bean中b.解决办法2:自己注入自己c.解决办法3:AopContext.currentProxy
- 在标注了@Async注解的方法内使用AopContext.currentProxy()问题
xjhqre
Java踩坑记录springjavaspring
问题说明在标注了@Async注解的方法内使用AopContext.currentProxy()会报错:Cannotfindcurrentproxy:Set'exposeProxy'propertyonAdvisedto'true'tomakeitavailable,andensurethatAopContext.currentProxy()isinvokedinthesamethreadasthe
- 解决 Cannot find current proxy: Set ‘exposeProxy‘ property on Advised to ‘true‘ to make it available,
Eric-x
零散知识点错误集合java开发语言
1、报错日志信息:Cannotfindcurrentproxy:Set'exposeProxy'propertyonAdvisedto'true'tomakeitavailable,2、报错场景因为使用了AOP中的获取代理对象,代码如下IVoucherOrderServiceproxy=(IVoucherOrderService)AopContext.currentProxy();3、报错原因因为
- Spring中事务管理TransactionTemplate和@Transactional注解
SILENCE_SPEAKS
Java基础相关javaspring
1.Spring支持编程式事务管理TransactionTemplate和声明式事务管理@Transactional两种方式和编程式事务相比,声明式事务唯一不足地方是最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等(比如使用AopContext.currentProxy())。2
- Spring获取代理类
止礼
学习springjava后端
方式一@AutowiredApplicationContextapplicationContext;applicationContext.getBean(接口类.class)方式二(xxx)AopContext.currentProxy();注意方式二Cannotfindcurrentproxy:Set‘exposeProxy’propertyonAdvisedto‘true’tomakeitav
- AopContext.currentProxy的原理和实战(解决同一个类中方法嵌套事务的失效问题)
无聊大侠hello world
日常记录Bugjavaspringspringboot
在Spring框架中,AOP代理通常在方法调用的外部进行拦截和增强,但对于同一个类内部的方法调用,由于绕过了代理对象,AOP增强可能会失效。为了解决这个问题,可以使用AopContext.currentProxy()方法来获取当前对象的AOP代理。AopContext.currentProxy()方法是Spring提供的一个静态方法,用于获取当前线程中正在执行的方法所属的代理对象。通过这个方法,你
- 同一个类间方法调用,第二个方法上的事务不生效
lesline
解决方法:1、增加配置2、方法调用处改为((AbstractTemplete)AopContext.currentProxy()).book(paramHeader);3、方法调用者的方法不能为final,不然报:Cannotfindcurrentproxy:Set'exposeProxy'propertyonAdvisedto'true'tomakeitavailable.4、被调用者的调用的方
- 内部方法调用时,aop失效
wang_cheng
Spring管理实务使用aop对事务进行处理,方法前开启事务,方法后提交事务,aop使用动态代理生成代理对象调用的内部方法this调用不起作用,应该用代理对象去调用spring中获取代理对象的三种方式:直接autowire;autowireapplicationcontext,通过context.getbean获取代理对象;通过aopcontext.currentproxy(源码里其实就是从Thr
- @Cached 不生效
RoyTien
SpringAOP简介与底层实现机制——动态代理创建缓存实例JetCache通过SpringAOP生成代理,来支持缓存功能。AopContext.currentProxy()该用法的意义原来在springAOP的用法中,只有代理的类才会被切入,我们在controller层调用service的方法的时候,是可以被切入的,但是如果我们在service层A方法中,调用B方法,切点切的是B方法,那么这时候
- AopContext.currentProxy()
菊地尤里
在同一个类中,非事务方法A调用事务方法B,事务失效,可以采用AopContext.currentProxy().xx()来进行调用,事务才能生效。B方法被A调用,对B方法的切入失效,但加上AopContext.currentProxy()创建了代理类,在代理类中调用该方法前后进行切入。对于B方法proxyA中调用只能对A进行增强,A里面调用B使用的是对象.B(),而不是$proxy.B(),所以对
- spring AopContext.currentProxy() 容器注解或自定义注解不生效
饱饱莫有灵感
场景无论spring的注解(如@Async,@Transactional),还是自定义的注解,不生效的场景一般出现于以下2种1.在同一个类中,无注解方法调用有注解的方法,会导致注解不生效2.在同一个类中,有注解方法调用另外一个有注解的方法,也会导致注解不生效原因由于spring的aop使用了动态代理,但同一个类内部调用不使用动态代理,而是真实对象this,因此无法进入切面,导致注解不生效解决以下方
- spring内部调用导致切面注解失效
King斌
方法一暴露Aop代理到ThreadLocal支持,在类之前加@EnableAspectJAutoProxy(exposeProxy=true)调用的时候使用((XxxService)AopContext.currentProxy()).method()调用方法ApiBaseResponse>apiPageResponseApiBaseResponse=((RoadLastPageServiceIm
- 解决spring嵌套事务不生效的问题
kagura7
比如希望如果method2()之后抛出异常method2()不回滚publicvoidmethod1(){method2();}方案一:把调用的方法放在另一个service中,配置事务隔离级别requires_new方案二:UserServiceuserService=(UserService)AopContext.currentProxy();userService.method2();在db配
- 事务在类内部方法调用中的应用
qq_36227416
开发生涯中遇到的问题
类A里的不带事务的b方法,调用类A里的带事务的c方法,则方法c不会以事务的方式的执行publicclassClassA{ publicvoidb(){ c(); } @Transactional publicvoidc(){ insert(); }}如果想类内部方法调用可以正常使用事务,使用AopContext.currentProxy()来获取代理类再调用,1,在sprin
- AopContext.currentProxy遇到的坑
shark1357
Spring的切面功能,是通过代理的方式来实现的,实现方式有JDK动态代理方式及Cglib的方式。有时需要在service层通过AOP做一些日志、权限、监控等功能,但在service中进行自调用时,无法再次走进代理类中,因此会导致漏日志的情况出现。此时,可通过AopContext.currentProxy()来解决问题。用AopContext.currentProxy().xxxx()的方式代替t
- Spring 拿到当前代理类
tomli2017
Java基础商业模式设计模式分布式系统设计算法
当前事务//拿到代理对象,保证事务finalMemberGradeServiceserviceProxy=(MemberGradeService)AopContext.currentProxy();
- @Transactional中try-catch和this使用事务失效的解决方法
随缘Fa
//通过获取当前代理对象来代替this的方法去解决this导致事务失效的问题((BaseWithdrawBillService)AopContext.currentProxy()).returnAliAmount(id);//解决在try-catch中无法回滚事务的问题TransactionAspectSupport.currentTransactionStatus().setRollbackOn
- Spring AopContext.currentProxy 遇到 JDK动态代理
Knowledge丶
笔记
在实际开发中,我们经常需要在同一个类中嵌套调用事物方法,由于springaop原理,只有在代理类调用层面的方法才会解析事物,方法内部嵌套调用,无法解析事物注解。所以这时我们就需要修改嵌套调用方式,用AopContext.currentProxy获取当前类的代理类来调用嵌套调用的方法,这样springaop就会解析方法事物注解标记。但是如果当前类实现了接口,spring默认会使用JDK动态代理,依赖
- AopContext.currentProxy的原理和实战(解决同一个类中方法嵌套事务的失效问题)
Knowledge丶
笔记
@EnableAspectJAutoProxy(proxyTargetClass=true,exposeProxy=true)publicclassTransactionTest{/***方法A没事务**@param*@returnvoid*/publicStringA(){System.out.println("A方法执行开始!!!");//生成TransactionTest代理类,再调用B方法
- Spring中同一个service调用方法不回滚的解决方法
weixin_41627757
java
在java配置类上添加注解@EnableAspectJAutoProxy(exposeProxy=true)方式暴漏代理对象,然后在service中通过代理对象AopContext.currentProxy()去调用方法。@ServicepublicclassHelloWorldServiceImplimplementsHelloWorldService{@AutowiredprivateBlog
- 关于事务之间的调用产生的回滚问题
薛定谔D猫丶
关于事务之间的调用产生的回滚问题//以下self()均看做AopContext.currentProxy()–》走代理路线!!,为的是在同一类两个事务方法生效(最后有说明)/**REQUIRED方法调用REQUIRED方法*///1.子方法抛出异常,父方法不处理,都会回滚----》updateA()回滚,updateB()回滚@Transactional(rollbackFor=Exception
- Spring注解事务失效原因以及解决方法
viktor-hi
java
原因在于spring声明示事物使用动态代理实现,而当调用同一个类的方法时,是会不会走代理逻辑的,自然事物的配置也会失效。比如Spring调用同一个类下的其他方法时用的是this.xxx(),所以不会走代理,导致事务失效解决方法在springxml中配置暴露proxy对象,然后在代码中用AopContext.currentProxy()就可以获当前代理对象xml配置文件配置暴露代理对象调用是声明走代
- AOP切入同类调用方法-AopContext.currentProxy()
aosica321
springspring-aopAopContextcurrentProxyAOP切入同类方法
来源:http://blog.csdn.net/z69183787/article/details/45622821最近在开发中遇到一个问题,当在Service中定义了一个方法并且切入之后,从Controller里面调用该方法可以实现切入,但是当在同一个Service中实现另一方法并调用改方法时却无法切入。代码类似于:[java]viewplaincopy/***Controller你懂的*/pu
- AOP切入同类调用方法不起作用,AopContext.currentProxy()帮帮你解决
bkc002
java
今天翻看公司之前代码时,无意中看到了如下一段代码:(UserService)AopContext.currentProxy()).getWechatInfo()心里在想,好好的方法为啥不通过this.getWechatInfo()调用,而是通过AopContext.currentProxy()这个aop方式调用,于是乎一顿查找,并了解到:当在Service中定义了一个方法并且切入之后,从Contr
- spring aop动态代理内部方法互相调用
nice_hui_
https://www.jianshu.com/p/6534945eb3b5修改类,不要出现“自调用”的情况:这是Spring文档中推荐的“最佳”方案;若一定要使用“自调用”,那么this.doSomething2()替换为:((CustomerService)AopContext.currentProxy()).doSomething2();此时需要修改spring的aop配置:作者:末等公民链
- Enum 枚举
120153216
enum枚举
原文地址:http://www.cnblogs.com/Kavlez/p/4268601.html Enumeration
于Java 1.5增加的enum type...enum type是由一组固定的常量组成的类型,比如四个季节、扑克花色。在出现enum type之前,通常用一组int常量表示枚举类型。比如这样:
public static final int APPLE_FUJI = 0
- Java8简明教程
bijian1013
javajdk1.8
Java 8已于2014年3月18日正式发布了,新版本带来了诸多改进,包括Lambda表达式、Streams、日期时间API等等。本文就带你领略Java 8的全新特性。
一.允许在接口中有默认方法实现
Java 8 允许我们使用default关键字,为接口声明添
- Oracle表维护 快速备份删除数据
cuisuqiang
oracle索引快速备份删除
我知道oracle表分区,不过那是数据库设计阶段的事情,目前是远水解不了近渴。
当前的数据库表,要求保留一个月数据,且表存在大量录入更新,不存在程序删除。
为了解决频繁查询和更新的瓶颈,我在oracle内根据需要创建了索引。但是随着数据量的增加,一个半月数据就要超千万,此时就算有索引,对高并发的查询和更新来说,让然有所拖累。
为了解决这个问题,我一般一个月会进行一次数据库维护,主要工作就是备
- java多态内存分析
麦田的设计者
java内存分析多态原理接口和抽象类
“ 时针如果可以回头,熟悉那张脸,重温嬉戏这乐园,墙壁的松脱涂鸦已经褪色才明白存在的价值归于记忆。街角小店尚存在吗?这大时代会不会牵挂,过去现在花开怎么会等待。
但有种意外不管痛不痛都有伤害,光阴远远离开,那笑声徘徊与脑海。但这一秒可笑不再可爱,当天心
- Xshell实现Windows上传文件到Linux主机
被触发
windows
经常有这样的需求,我们在Windows下载的软件包,如何上传到远程Linux主机上?还有如何从Linux主机下载软件包到Windows下;之前我的做法现在看来好笨好繁琐,不过也达到了目的,笨人有本方法嘛;
我是怎么操作的:
1、打开一台本地Linux虚拟机,使用mount 挂载Windows的共享文件夹到Linux上,然后拷贝数据到Linux虚拟机里面;(经常第一步都不顺利,无法挂载Windo
- 类的加载ClassLoader
肆无忌惮_
ClassLoader
类加载器ClassLoader是用来将java的类加载到虚拟机中,类加载器负责读取class字节文件到内存中,并将它转为Class的对象(类对象),通过此实例的 newInstance()方法就可以创建出该类的一个对象。
其中重要的方法为findClass(String name)。
如何写一个自己的类加载器呢?
首先写一个便于测试的类Student
- html5写的玫瑰花
知了ing
html5
<html>
<head>
<title>I Love You!</title>
<meta charset="utf-8" />
</head>
<body>
<canvas id="c"></canvas>
- google的ConcurrentLinkedHashmap源代码解析
矮蛋蛋
LRU
原文地址:
http://janeky.iteye.com/blog/1534352
简述
ConcurrentLinkedHashMap 是google团队提供的一个容器。它有什么用呢?其实它本身是对
ConcurrentHashMap的封装,可以用来实现一个基于LRU策略的缓存。详细介绍可以参见
http://code.google.com/p/concurrentlinke
- webservice获取访问服务的ip地址
alleni123
webservice
1. 首先注入javax.xml.ws.WebServiceContext,
@Resource
private WebServiceContext context;
2. 在方法中获取交换请求的对象。
javax.xml.ws.handler.MessageContext mc=context.getMessageContext();
com.sun.net.http
- 菜鸟的java基础提升之道——————>是否值得拥有
百合不是茶
1,c++,java是面向对象编程的语言,将万事万物都看成是对象;java做一件事情关注的是人物,java是c++继承过来的,java没有直接更改地址的权限但是可以通过引用来传值操作地址,java也没有c++中繁琐的操作,java以其优越的可移植型,平台的安全型,高效性赢得了广泛的认同,全世界越来越多的人去学习java,我也是其中的一员
java组成:
- 通过修改Linux服务自动启动指定应用程序
bijian1013
linux
Linux中修改系统服务的命令是chkconfig (check config),命令的详细解释如下: chkconfig
功能说明:检查,设置系统的各种服务。
语 法:chkconfig [ -- add][ -- del][ -- list][系统服务] 或 chkconfig [ -- level <</SPAN>
- spring拦截器的一个简单实例
bijian1013
javaspring拦截器Interceptor
Purview接口
package aop;
public interface Purview {
void checkLogin();
}
Purview接口的实现类PurviesImpl.java
package aop;
public class PurviewImpl implements Purview {
public void check
- [Velocity二]自定义Velocity指令
bit1129
velocity
什么是Velocity指令
在Velocity中,#set,#if, #foreach, #elseif, #parse等,以#开头的称之为指令,Velocity内置的这些指令可以用来做赋值,条件判断,循环控制等脚本语言必备的逻辑控制等语句,Velocity的指令是可扩展的,即用户可以根据实际的需要自定义Velocity指令
自定义指令(Directive)的一般步骤
&nbs
- 【Hive十】Programming Hive学习笔记
bit1129
programming
第二章 Getting Started
1.Hive最大的局限性是什么?一是不支持行级别的增删改(insert, delete, update)二是查询性能非常差(基于Hadoop MapReduce),不适合延迟小的交互式任务三是不支持事务2. Hive MetaStore是干什么的?Hive persists table schemas and other system metadata.
- nginx有选择性进行限制
ronin47
nginx 动静 限制
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;...
server {...
location ~.*\.(gif|png|css|js|icon)$ {
- java-4.-在二元树中找出和为某一值的所有路径 .
bylijinnan
java
/*
* 0.use a TwoWayLinkedList to store the path.when the node can't be path,you should/can delete it.
* 1.curSum==exceptedSum:if the lastNode is TreeNode,printPath();delete the node otherwise
- Netty学习笔记
bylijinnan
javanetty
本文是阅读以下两篇文章时:
http://seeallhearall.blogspot.com/2012/05/netty-tutorial-part-1-introduction-to.html
http://seeallhearall.blogspot.com/2012/06/netty-tutorial-part-15-on-channel.html
我的一些笔记
===
- js获取项目路径
cngolon
js
//js获取项目根路径,如: http://localhost:8083/uimcardprj
function getRootPath(){
//获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp
var curWwwPath=window.document.locati
- oracle 的性能优化
cuishikuan
oracleSQL Server
在网上搜索了一些Oracle性能优化的文章,为了更加深层次的巩固[边写边记],也为了可以随时查看,所以发表这篇文章。
1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。(这点本人曾经做过实例验证过,的确如此哦!
- Shell变量和数组使用详解
daizj
linuxshell变量数组
Shell 变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
your_name="w3cschool.cc"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用ba
- 编程中的一些概念,KISS、DRY、MVC、OOP、REST
dcj3sjt126com
REST
KISS、DRY、MVC、OOP、REST (1)KISS是指Keep It Simple,Stupid(摘自wikipedia),指设计时要坚持简约原则,避免不必要的复杂化。 (2)DRY是指Don't Repeat Yourself(摘自wikipedia),特指在程序设计以及计算中避免重复代码,因为这样会降低灵活性、简洁性,并且可能导致代码之间的矛盾。 (3)OOP 即Object-Orie
- [Android]设置Activity为全屏显示的两种方法
dcj3sjt126com
Activity
1. 方法1:AndroidManifest.xml 里,Activity的 android:theme 指定为" @android:style/Theme.NoTitleBar.Fullscreen" 示例: <application
- solrcloud 部署方式比较
eksliang
solrCloud
solrcloud 的部署其实有两种方式可选,那么我们在实践开发中应该怎样选择呢? 第一种:当启动solr服务器时,内嵌的启动一个Zookeeper服务器,然后将这些内嵌的Zookeeper服务器组成一个集群。 第二种:将Zookeeper服务器独立的配置一个集群,然后将solr交给Zookeeper进行管理
谈谈第一种:每启动一个solr服务器就内嵌的启动一个Zoo
- Java synchronized关键字详解
gqdy365
synchronized
转载自:http://www.cnblogs.com/mengdd/archive/2013/02/16/2913806.html
多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。
同步机制可以使用synchronized关键字实现。
当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。
当s
- js实现登录时记住用户名
hw1287789687
记住我记住密码cookie记住用户名记住账号
在页面中如何获取cookie值呢?
如果是JSP的话,可以通过servlet的对象request 获取cookie,可以
参考:http://hw1287789687.iteye.com/blog/2050040
如果要求登录页面是html呢?html页面中如何获取cookie呢?
直接上代码了
页面:loginInput.html
代码:
<!DOCTYPE html PUB
- 开发者必备的 Chrome 扩展
justjavac
chrome
Firebug:不用多介绍了吧https://chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifench
ChromeSnifferPlus:Chrome 探测器,可以探测正在使用的开源软件或者 js 类库https://chrome.google.com/webstore/detail/chrome-sniffer-pl
- 算法机试题
李亚飞
java算法机试题
在面试机试时,遇到一个算法题,当时没能写出来,最后是同学帮忙解决的。
这道题大致意思是:输入一个数,比如4,。这时会输出:
&n
- 正确配置Linux系统ulimit值
字符串
ulimit
在Linux下面部 署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题;这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用 其实很容易就达到这个数量。下面说的是,如何通过正解配置来改正这个系统默认值。因为这个问题是我配置Nginx+php5时遇到了,所以我将这篇归纳进
- hibernate调用返回游标的存储过程
Supanccy2013
javaDAOoracleHibernatejdbc
注:原创作品,转载请注明出处。
上篇博文介绍的是hibernate调用返回单值的存储过程,本片博文说的是hibernate调用返回游标的存储过程。
此此扁博文的存储过程的功能相当于是jdbc调用select 的作用。
1,创建oracle中的包,并在该包中创建的游标类型。
---创建oracle的程
- Spring 4.2新特性-更简单的Application Event
wiselyman
application
1.1 Application Event
Spring 4.1的写法请参考10点睛Spring4.1-Application Event
请对比10点睛Spring4.1-Application Event
使用一个@EventListener取代了实现ApplicationListener接口,使耦合度降低;
1.2 示例
包依赖
<p