저는 스프링 코어 인증을 받기 위해 공부하고 있는데 선언적 트랜시 컨 구성을 통해 XML 구성 파일을 통해 다음과 같은 의심을 품고 있습니다.Spring XML 구성을 사용하여 트랜잭션 동작을 활성화하는 방법은 무엇입니까?
그래서 나는 수업을 주석 트랜잭션 동작을 구성 할 수 있다는 것을 알고 \ 또는 트랜잭션 행동이 같을 필요는 방법 :
@Transactional(timeout=60)
public class RewardNetworkImpl implements RewardNetwork {
public RewardConfirmation rewardAccountFor(Dining d) {
// atomic unit-of-work
}
@Transactional(timeout=45)
public RewardConfirmation updateConfirmation(RewardConfirmantion rc) {
// atomic unit-of-work
}
}
나 또한 가끔에 주석을 사용할 수 있다는 것을 알고 클래스 및 \ 또는 메소드의 트랜잭션 동작을 구성하십시오 (예 : 트랜잭션 방식으로 작동해야하는 메소드가 포함 된 클래스의 Java 코드가없는 경우).
XML 구성 및 AOP을 사용하여 트랜잭션 동작을 구성 할 수 있습니다.
내가 이런 식으로 그것을 할 수 있다는 것을 알고 설명서를 읽기 :
AOP 포인트 컷 조언하는 것을 선언합니다.
스프링의 tx 네임 스페이스는 거래상의 조언을 간결하게 정의합니다.
는 봄 콩
로 사용되는 클래스에 트랜잭션 동작을 추가 할 수 그리고 난 다음 예는 어떻게 관련이있다 :
<aop:config>
<aop:pointcut id=“rewardNetworkMethods” expression=“execution(* rewards.RewardNetwork.*(..))”/>
<aop:advisor pointcut-ref=“rewardNetworkMethods” advice-ref=“txAdvice”/>
</aop:config>
<tx:advice id=“txAdvice”>
<tx:attributes>
<tx:method name="get*" read-only="true" timeout="10"/>
<tx:method name="find*" read-only="true" timeout="10"/>
<tx:method name="*" timeout="30"/>
</tx:attributes>
</tx:advice>
<bean id=“transactionManager”
class=“org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<property name=“dataSource” ref=“dataSource”/>
</bean>
이 좋아,하지만 지금은 일부가 문제로 인해 이전 XML 구성이 정확히 무엇을하는지 이해해야합니다.
나는 첫 번째 섹션은 내가 조언을하고 싶은의 선언을 대표한다고 생각 :
그래서이 경우에 나는 rewards.RewardNetwork 안에있는 모든 방법과 관련된 포인트 컷을 선언하고<aop:config>
<aop:pointcut id=“rewardNetworkMethods” expression=“execution(* rewards.RewardNetwork.*(..))”/>
<aop:advisor pointcut-ref=“rewardNetworkMethods” advice-ref=“txAdvice”/>
</aop:config>
모든 매개 변수를 취하고 모든 종류의 객체를 반환합니다.
그래서이 모든 방법에서 트랜잭션 동작을 추가하고 싶습니다. 또는 무엇을?
정확히이 태그의 두 번째 줄을 의미합니까?이것은 하나
: 다음<aop:advisor pointcut-ref=“rewardNetworkMethods” advice-ref=“txAdvice”/>
, 두 번째 섹션에, 이전의 pointcut 표현에 의해 트랜잭션 행동이이 방법을 사용할 것을 선택한 metodse의 부분 집합을 지정하는 것이 나에게 보인다 재치를 시작
- 모든 방법 :이 경우
나는 그것이 텍사스 네임 스페이스를 사용하고 있다고 생각하는 트랜잭션 조언 간결한 정의 할 수 있습니다 h 얻을<tx:advice id=“txAdvice”> <tx:attributes> <tx:method name="get*" read-only="true" timeout="10"/> <tx:method name="find*" read-only="true" timeout="10"/> <tx:method name="*" timeout="30"/> </tx:attributes> </tx:advice>
- 찾기로 시작하는 모든 metod
- 세 번째 tx 태그로 무엇을 선택합니까? (*)
첫째는 대상 클래스와 I는 트랜잭션 동작을 사용하려는 방법 을 선택하는 포인트 컷을 선택 AOP를 사용하는 것이 나에게 보인다 다음은 텍사스 태그를 사용 구체적인 방법의 부분 집합을 선택하여 실제 트랜잭션을 만듭니다.
그렇다면 왜이 두 단계가 있어야 메토를 선택하고 트랜잭션으로 만들 수 있습니까?
맞습니까? 아니면 뭔가 빠졌습니까? 이 구성의 논리가 무엇인지 정확히 설명해 주시겠습니까?