中易网

用spring事务管理后,自己自定义的annotation注解没有效果了

答案:1  悬赏:50  
解决时间 2021-12-15 17:57
@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD)

public @interface SubMethod {

public String value() default "get";

}

public abstract class IndexServlet extends HttpServlet {

protected static final String POST = "post";

protected static final String GET = "get";

@Override

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.dealRequest( GET, request, response );

}

@Override

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.dealRequest( POST, request, response );

}

public void dealRequest(

String subMehod,

HttpServletRequest request,

HttpServletResponse response ) throws IOException {

String url = request.getRequestURI();

//System.out.println( url );

//通过路劲获得对应的对象和方法

Method method = null;

Object instance = null;

HashMap map = this.praseUrl2Object( url );

if( map == null ){

//没有对应的方法则返回

this.noMethod( response );

return;

} else {

instance = map.get( "instance" );

method = (Method)map.get( "method" );

}

//判断是否是对应的提交方式

//默认为get方式

String m = GET;

SubMethod anns = method.getAnnotation( SubMethod.class );

if( anns != null ) {

m = anns.value();

if( Validation.isNull( m ) ) {

m = GET;

} else {

m = m.toLowerCase();

}

//System.out.println( "-------------------------anns is " + m );

} else {

//System.out.println( "--------只要spring的事务管理就取不到m的值是get或者post,不参与spring的事务就ok---------------anns is null" );

}

} catch ( Exception e ) {

//访问失败

LogUtil.getLogger().warn( e, SystemCode.E5000000001, url );

} finally {

//将session从本地线程存储中移出

manager.clearTerminalSession();

}

//返回数据

this.writeAndClose( response, content );

}

@Component("testImpl")

public class TestImpl {

@SubMethod("post")//这个类不参与spring事务就能取的到post,参与spring事物就不行,想要的结果是取到post这个值。

public String testPostMe( String param ){

System.out.println("================");

return "ok";

}

}

}

多谢解答下。
最佳答案
你在Debug模式下查看一下看看栈里的信息。再用Junit查看一下栈里信息。你的annotation有没有包进来。估计问题就出在配置文件里。因为我以前也是类似的问题,最后发现配置文件的问题!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
郁怅的意思是什么啊?请解释下!
仇雠的意思是什么?仇雠的释义是什么啊?
酒驾判刑4个月有案底对以后购房贷款有什么影
QT中QDockWidget标题的位置怎么调整
使用大专学生证麦当劳半价可以么
一对夫妻没登记结婚,生了三个孩子,后来男方
刚进一家公司2天做得不开心要辞职吗
不是所有的人都不喜欢你----所有的人都喜欢你
川藏高原位于哪里????。
竊權的意思是什么?竊權的释义是什么啊?
黄金颡的意思是什么啊?请解释下!
運輸的意思是什么?運輸的释义是什么啊?
梦见蛇在脸上爬怎么回事
醟貝的意思是什么?醟貝的释义是什么啊?
释放的意思是什么?释放的释义是什么啊?
推荐资讯
壯志的意思是什么?壯志的释义是什么啊?
广州市番禺区大石哪里有卖宠物兔的
新标日初级学完,去学大家的中级如何?
inaparallelmanner是什么意思
切击式水轮机的优缺点
请问在VMWare下的linux怎样启动Xwindow启动
溪壑的意思是什么啊?请解释下!
对于中学生来说,怎样健康减肥?祛眼袋,黑眼
沙原的意思是什么?沙原的释义是什么啊?
掀擢的意思是什么?掀擢的释义是什么啊?
征酒的意思是什么?征酒的释义是什么啊?
医学的意思是什么?医学的释义是什么啊?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?