将代理添加到Spring托管bean

时间:2014-08-06 17:21:38

标签: java spring proxy transactions

我正在开发一个Web项目,其中一个要求是在数据库中的每个操作之前调用一些存储过程(用于init / debug / audit)。 我的服务层使用Spring来管理事务,这意味着它们被明确分隔。

我的想法是通过注释添加代理类来调用这些SP。 我阅读了很多博客,关于编写注释的文章,AOP,AspectJ,代理等等,但我不了解如何根据自己的需要使用它。

我的一个问题是如何确保Spring代理会调用我的代理(在启动事务之后)?另一个是如何触发我自己的代理的创建? 任何精确度都会受到欢迎,因为到目前为止,我理解主要想法,但我不清楚我是如何真正做到的。

3 个答案:

答案 0 :(得分:0)

我认为你应该首先阅读更多关于AOP和AspectJ的内容,我可以向你推荐着名的“Spring in Action”一书中的“Aspect Oriented Spring”一章。它会回答你的所有问题。

  

如何确保我的代理将被Spring代理调用(之后   它开始了交易)?

嗯,你自己不这样做,Spring确保根据你配置它们的方式调用你的建议。

  

如何触发创建自己的代理?

我不确定我是否理解这个问题,但是Spring需要代理才能执行AOP,因此您不必自己触发任何代理创建。

答案 1 :(得分:0)

您可以使用Spring建议来呼叫SP。使用建议命令在同一事务中运行SP。 <tx:annotation-driven/>可以获取订单属性,您可以通过该属性控制首先应用的代理。

来自Spring Reference的

建议订购

最高优先级建议首先“在路上”(因此给出两条之前的建议,优先级最高的建议首先运行)。从连接点“出路”,最高优先级建议最后运行(因此,给出两条后建议,具有最高优先级的建议将运行第二)。

答案 2 :(得分:0)

最后,我成功实施了它,我描述了here

的方式

希望它会有所帮助...