Менеджер транзакций источника данных Spring не откатывается - PullRequest
1 голос
/ 08 марта 2011
<!-- Data source definition -->
<bean id="dataSourceWebsube"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"
    p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url.websube}"
    p:username="${jdbc.username.websube}"   p:password="${jdbc.password.websube}" />

<bean id="jdbcTemplateWebsube" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSourceWebsube" />
</bean>         

<!-- Transaction manager, actually this one is useless since the Transaction Manager Bean is already called transactionManager -->      
<tx:annotation-driven transaction-manager="transactionManager"/>  

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

public class Test 
{
@Transactional
public static void testTranscational(JdbcTemplate jdbcTmpl)
{
    String sql = null;                              
    sql = "INSERT INTO NBSM.INT_RTLNOUTBOUND_PRODUCTS(BASEPRODUCTCODE)VALUES(1)";                
    jdbcTmpl.update(sql);           
    throw new RuntimeException();                       
}

public static void main(String[] args) {            
    ApplicationContext ctx = new ClassPathXmlApplicationContext("application-context.xml");
    JdbcTemplate jdbcTmpl = (JdbcTemplate) ctx.getBean("jdbcTemplateWebsube");      
    testTranscational(jdbcTmpl);
}
}

Здравствуйте,

Я пытаюсь проверить возможности управления транзакциями Spring, но не могу заставить его работать.Я пытался решить ее часами, но безуспешно.

Выше вы можете увидеть соответствующие определения config xml и класс dao test.Даже когда я использую уровень отладки для ведения журнала, механизм отката не занимает места.

Любая помощь будет принята с благодарностью

1 Ответ

2 голосов
/ 08 марта 2011

Это потому, что Spring AOP может только:

  • a) работать с управляемым компонентом Spring
  • b) работать без статических методов
  • c) естьпринимается во внимание, только если вызван Spring AOP Proxy (вам нужно вызывать бин из другого бина, но не из самого себя)

a) и b) ваши ошибки, вам нужно исправитьЭто.- чтобы преодолеть проблему c) я решительно заменяю Spring AOP на помахивание времени компиляции AspectJ.

Если я прав, даже обработка транзакций (по @Transational не должна работать.

Нужно проверить кого-то еще:

Я никогда не видел @Transactional в сочетании с JdbcTemplate, поэтому я сомневаюсь, что это работает навсе. - Но я могу ошибаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...