当我们代理对象时,场景背后会发生什么。比方说,我说bean id =“bookService”是指Spring的TransactionProxyFactoryBean类。
TransactionProxyFactoryBean的target属性指向BookServiceImpl类。所以BookServiceImpl(这是BookService接口的一个实现)正在被代理。 但这里发生了什么?此TransactionProxyFacotoryBean类是否扩展了代理的目标?
如果是这样,TransactionProxyFactoryBean子类本身是否来自BookServiceImpl(实现)或BookService(接口)?
答案 0 :(得分:0)
TransactionProxyFactoryBean将创建一个代理。它本身不是代理人。
此代理将处理对bean的调用,对于已配置为应用事务的方法,将调用TransactionInterceptor,它将启动事务,调用bean的方法,然后结束事务。
如果您有proxyTargetClass =“true”,那么代理将是该类的子类型(使用CGLIB)。否则,代理将是目标类实现的接口的子类型。