Java 为什么spring在调用Springbean的方法之前调用了这么多方法?

Java 为什么spring在调用Springbean的方法之前调用了这么多方法?,java,spring,Java,Spring,假设我在spring配置中指定了一个类,如下所示: <bean id="playerAccountDao" class="com.prcj.db.dao.PlayerAccountDaoImpl" scope="prototype"> <property name="playerDao" ref="playerDao" /> </bean> <bean id="commonPlayerDao" class="com.prcjcommons.db

假设我在spring配置中指定了一个类,如下所示:

<bean id="playerAccountDao" class="com.prcj.db.dao.PlayerAccountDaoImpl" scope="prototype">
    <property name="playerDao" ref="playerDao" />
</bean>

<bean id="commonPlayerDao" class="com.prcjcommons.db.dao.PlayerDaoImpl" scope="prototype">
    <property name="sessionFactory" ref="siteSessionFactory" />
</bean>

为什么
spring
会这样做?为什么它不直接调用
DAO
方法呢?

让我来转一转:为什么编写过调用其他方法的方法,而不是直接更改变量

这只是另一种间接方式。IoC可能非常复杂,Spring有很多特性可以让用户满意(r),因此它有很多情况需要支持。拥有这些不同的调用策略和拦截器意味着它们可以避免重复,共享公共方面,同时允许不同的行为


如果他们只是调用了DAO方法,那么他们的大部分功能集就不受支持。

Spring提供了AOP功能,这就是为什么您需要这样做的原因
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]  
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57  
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43  
Method.invoke(Object, Object...) line: 606  
AopUtils.invokeJoinpointUsingReflection(Object, Method, Object[]) line: 310 
ReflectiveMethodInvocation.invokeJoinpoint() line: 182  
ReflectiveMethodInvocation.proceed() line: 149  
TransactionInterceptor.invoke(MethodInvocation) line: 106   
ReflectiveMethodInvocation.proceed() line: 171  
JdkDynamicAopProxy.invoke(Object, Method, Object[]) line: 204   
$Proxy151.selectRecordList(Long, Integer, PlayerStatus, UserCategory, Date, Date, int, int) line: not available