2012-05-31 5 views
2

@Transactional 주석이있는 일부 메소드가 있습니다. 이 메소드는 스프링 생성 프록시를 통해 호출되지 않지만 프록시를 사용하지 않고 트랜잭션 생성을 강제해야합니다.annotated 메소드 용 스프링 적용 트랜잭션 로직

구현할 수 있습니까?

transactionTemplate.execute(new TransactionCallbackWithoutResult() 
{ 
    @Override 
    protected void doInTransactionWithoutResult(TransactionStatus status) 
    { 
     //... 
    } 
}); 

물론 당신은 또한 TransactionTemplate을 정의 할 수 있습니다 : 당신이 결과가 필요하지 않은 경우

final TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); 

transactionTemplate.execute(new TransactionCallback<String>() 
{ 
    @Override 
    public String doInTransaction(TransactionStatus status) 
    { 
     //... 
     return "Some result"; 
    } 
}); 

을 또는 :

+2

(http://static.springsource.org/spring/docs/current/ : 그렇지 않으면 당신은 당신이 트랜잭션 관리자를 주입 할 필요가 당신이 다음을 필요로하지만, 모든 시간을 만들 수 있습니다 javadoc-api/org/springframework/transaction/support/TransactionTemplate.html)? 관심이 있다면 나는 대답으로 확장하고 더 자세한 내용을 제공 할 것입니다. –

+0

@TomaszNurkiewicz, TransactionTemplate은 내 문제를 해결하는 데 도움이되었습니다. –

답변

2

당신은 제공된 코드 블록/콜백에서 수동으로 거래를 시작 TransactionTemplate을 사용할 수 있습니다 Spring 빈처럼 직접 주입하십시오. 무엇 [`TransactionTemplate`] 사용에 대한

@Resource 
private PlatformTransactionManager transactionManager; 
관련 문제