spirng aop问题

img


如上用接口完成aop操作。请问为什么通过接口class就能获取到代理对象呢 内存中不是有代理和目标两个对象吗 为什么就只获取到代理呢,如果通过getbean(目标对象名字,class)为啥也会得到代理对象呢

在使用 AOP 进行编程时,我们通常会将目标对象和代理对象都注册到容器中。当我们通过接口的方式获取 bean 时,实际上是获取到了代理对象,因为这个代理对象实现了目标对象所实现的接口,以此对外提供服务。

Spring 框架使用动态代理技术来实现 AOP,在运行时生成代理类。在 Spring 中,BeanFactory 负责管理 Bean(即目标对象),而 ProxyFactoryBean 负责创建代理对象。当我们通过 getBean 获取一个 Bean 时,如果这个 Bean 是一个代理对象,那么容器会返回该代理对象;如果这个 Bean 不是代理对象,则直接返回目标对象。

因此,无论是通过接口还是通过目标对象名字来获取 Bean,只要这个 Bean 在容器中被注册为代理对象,就会返回该代理对象。