gpt4 book ai didi

java - Spring注释不起作用

转载 作者:行者123 更新时间:2023-12-04 07:00:01 25 4
gpt4 key购买 nike

我将此发布到 Spring 论坛,为 xpost 感到抱歉。

我是 Spring 的新手。我正在开发一个使用 spring 1.2.8(旧,我知道)和 java 1.5 的现有项目,因此注释应该可以工作。

我正在尝试在具体类上使用 @Transactional 注释,遵循以下文档:http://static.springsource.org/spring/docs/1.2.8/reference/transaction.html#d0e6062

所以我有这样的事情:

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="DataSource"/>
</bean>

<bean id="MyDAO"
class="com.company.package.dao.spring.MyDAOImpl">
<property name="dataSource" ref="DataSource" />
</bean>

<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>

<bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
<property name="transactionInterceptor" ref="txInterceptor"/>
</bean>

<bean id="txInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributeSource">
<bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
</property>
</bean>

我注释我的类(class):
@Transactional(propagation = Propagation.REQUIRED)
public class MyDAOImpl extends JdbcDaoSupport implements MyDAO{
...
}

当我运行它时,我可以在调试日志中看到 spring 正在查找所有类:
代码:
01-07-10 12:10:45 DEBUG [DefaultXmlBeanDefinitionParser] Neither XML 'id' nor 'name' specified - using generated bean name [org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator]
01-07-10 12:10:45 DEBUG [DefaultXmlBeanDefinitionParser] Neither XML 'id' nor 'name' specified - using generated bean name [org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor]
01-07-10 12:10:45 DEBUG [DefaultXmlBeanDefinitionParser] Neither XML 'id' nor 'name' specified - using generated bean name [org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#329f3d]

但在那之后没有提到注释或交易。我什至不知道是否应该有。我正在我的 mysql 日志中验证查询不是以事务方式执行的。

有任何想法吗?

最佳答案

我经常忽略的一件事是,代理只能拦截来自类本身外部的调用:如果您有一个方法调用同一类中的事务方法,则代理不会包装它。但那是对个别方法进行注释的时候,而不是整个类,所以这可能不是导致您出现问题的原因。

关于java - Spring注释不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2023162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com