初学spring,有几个问题弄不明白 ,请各位高手不惜赐教
关于后置环绕通知:
public void afterThrowing(Method m, Object[] args, Object target,
Throwable ex) {
SuperLogic sl = (SuperLogic)target;

try {
sl.getSqlMap().endTransaction();
System.out.println("endTransaction");// DEBUG

} catch (SQLException e) {
e.printStackTrace();
}
}
上述中printStackTrace()方法有什么作用,就是这个方法起到事物回滚的吗?
关于配置文件:
(1)ref 后面加local与bean是否有本质区别
<bean id="DAOBean" class="classes. DAOBean " >
<property name="sqlMap">
<ref local="sqlMap" />
</property>
</bean>

<bean id=" DAOBean " class=" classes. DAOBean " >
<property name="sqlMap">
<ref bean="sqlMap" />
</property>
</bean>
(2) list的用法,下面的bean可不可以将<list></list>去掉
下面三个bean的关系应该如何解释
<bean id="AppleDAO" class="org.springframework.aop.framework.ProxyFactoryBean" >
<property name="target">
<ref bean="AppleDAOBean" />
</property>
<property name="interceptorNames">
<list>
<value>loggingAdvisor</value>
</list>
</property>
</bean>
<bean id="loggingAdvisor"
class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor" >
<property name="advice">
<ref local="loggingInterceptor" />
</property>
<property name="mappedNames">
<list>
<value>*select*</value>
<value>*insert*</value>
<value>*update*</value>
<value>*delete*</value>
</list>
</property>
</bean> 

<bean id="loggingInterceptor" class="classes.LoggingInterceptor" />
写的很乱 请各位大侠看到什么有什么想说的都说上两句,新人万分感激

解决方案 »

  1.   

    1st printStackTrace()只是用来打印出错信息的,事务是交给sqlMap.endTransaction()处理的,在end之前如果没有commit就会rollback2nd local 表示在当前xml文件中验证beanid引用.如果在同一个文件中没有匹配的元素,就会出错;bean表示在整个spring的上下文中即所有的springxml文件中查找beanid引用进行注入3rd 不可以去掉,因为interceptorNames本身是个集合,加入list,Spring会按照集合类的形式进行初始化
      

  2.   

    sl.getSqlMap().endTransaction();
    还没回滚呢,就结束事务啊