我正在阅读this official page of Spring documentation然后我读了一句我不理解的句子:
使用Spring MVC时,无法向最终方法添加建议。对于 例如,您无法添加建议 AbstractController.setSynchronizeOnSession()方法。请参阅章节 10.6.1,“了解AOP代理”以获取有关AOP代理的更多信息以及为什么不能向最终方法添加建议。
有人可以向我解释这是什么意思,特别是建议?
答案 0 :(得分:1)
建议是一种应该在调用另一个类的方法之前或之后调用的方法。
示例可以是日志记录建议,它附加到服务的每个方法以注销每个服务方法的调用。
为了将建议附加到方法,Spring将类子类化,该方法属于并覆盖该方法,该实现在调用方法时调用通知。另外,代理方法也会调用覆盖方法(超级方法)来获取原始功能。
最终方法不能被覆盖,因此Spring无法创建代理,您可以附加建议。
它的一般限制是,不可能将子类代理用于最终方法。这不是方面的特殊限制。
答案 1 :(得分:0)
建议不是特定于Spring MVC的东西,而是来自面向方面编程的概念(简称AOP,请参阅this wikipedia page进行一般性介绍)。< / p>
Spring Beans的工作方式以及它们允许AOP的方式是将您注释为bean的类,并基于该类创建代理,这意味着在运行中/在运行时创建子类从您的类继承并为每个方法提供自定义实现的实例(&#39;覆盖&#39;它们)。如你所知,重写最终方法本质上是不可能的(这是使他们最终的原因)。这就是文档陈述的原因:
你无法为最终方法添加建议