M S*_*ach 12 java spring aspectj spring-aop
Say Service调用需要应用日志方面(注释)的Dao类.我想知道方面实际上是如何应用的.
根据我在服务对象下注入DAO时的理解,spring发现有一些方面(在这种情况下是日志记录)是为DAO配置的,因此它会注入代理对象而不是实际的目标对象.现在,当对DAO中的任何方法进行实际调用时,代理应用方面,然后调用实际的目标对象.那是对的吗 ?另外我相信这叫做跑步编织.
另一方面,可以使用加载时间编织(使用javaagent配置)完成相同的操作,其中对需要应用方面的类执行字节代码操作.所以代理不会在这里出现.
如果我错了,请纠正我,因为这是所有弹簧模块的基础?
And*_*sne 12
你的理解是正确的.Spring AOP是基于代理的.Spring使用JDK代理(首选代理目标实现至少一个接口)或CGLIB代理(如果目标对象不实现任何接口)来为给定目标bean创建代理.
除非另有配置,否则Spring AOP会执行运行时编织.但是,您可以设置Spring通过AspectJ进行加载时编织.有关详细信息,请查看文档链接.