spring 트 랜 잭 션 특성 테스트 에서 발 견 된 문제
3323 단어 봄 사무required전파 특성REQUIRES_NEW
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void saveLoginInfo(String userName, String dateString, String result) {
// ( )
this.saveLoginInfoCall("2000040", "2013-09-10 00:00:00.000", "2000040| test|saveLoginInfo|big1");
// ( service )
this.storeServiceImpl.saveLoginInfoCall("2000040", "2013-09-10 00:00:00.000", "2000040| test|saveLoginInfo|big1|big2");
String sql = "INSERT INTO prc_mbl_usr_usg (slsprs_id, lgn_dtm, lgn_sts ) VALUES (" + "'" + userName + "'," + "'" + dateString + "'," + "'" + result + "')";
logger.info(sql);
this.baseDaoImpl.insert(sql);
int m = 0;
if (m == 0) {
throw new RuntimeException(" !");
}
this.baseDaoImpl.insert(sql);
}
이러한 방법 은 saveLoginInfoCall 과 store ServiceImpl 류 의 방법 이 일치 합 니 다.
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveLoginInfoCall(String userName, String dateString, String result) {
String sql = "INSERT INTO prc_mbl_usr_usg (slsprs_id, lgn_dtm, lgn_sts ) VALUES (" + "'" + userName + "'," + "'" + dateString + "'," + "'" + result + "')";
logger.info(sql);
this.baseDaoImpl.insert(sql);
int m = 0;
// if (m == 0) {
// throw new RuntimeException(" !");
// }
this.baseDaoImpl.insert(sql);
}
테스트 코드:
@Test
public void testTransaction() {
System.out.println(AopUtils.isAopProxy(loginServiceImpl));
System.out.println(loginServiceImpl.getClass().getName());
loginServiceImpl.saveLoginInfo("2000040", "2013-09-10 00:00:00.000", "2000040| test|saveLoginInfo");
}
설명: saveLoginInfo () 방법 이 있 는 종 류 는 loginServiceImpl 입 니 다.
테스트 를 통 해 saveLoginInfo () 방법 이 이 클래스 의 saveLoginInfoCall () 방법 을 호출 한 후에 이상 을 던 진 것 으로 나 타 났 습 니 다. 이 클래스 의 방법 saveLoginInfoCall () 은 데이터 베 이 스 를 삽입 하지 않 았 고 storeServiceImpl 류 의 saveLoginInfoCall () 방법 은 데이터 베 이 스 를 삽입 한 것 으로 나 타 났 습 니 다.REQUIRESNEW 사물 의 전파 특성 에 있어 서 두 가지 방법의 출입 은 모두 성공 할 수 있어 야 한다.하지만 이 클래스 를 호출 하 는 방법 은 성공 하지 못 한 것 입 니 다!
그 다음 에 계속 테스트 를 한 다음 에 본 클래스 와 storeServiceImpl 클래스 의 방법 인 saveLoginInfoCall () 의 사무 주 해 를 모두 NEVER 로 바 꾼 다음 에 테스트 를 한 결과 본 클래스 의 방법 인 saveLoginInfoCall () 을 실행 할 때 오류 가 발생 하지 않 고 storeServiceImpl 류 의 saveLoginInfoCall () 방법 을 실행 할 때 오류 가 발생 했 습 니 다. NEVER 를 설치 하 는 전파 특성 에 있어 서 는...이 클래스 의 saveLoginInfoCall () 방법 을 실행 할 때 오류 가 발생 합 니 다 (NEVER 트 랜 잭 션 전파 특성 은 트 랜 잭 션 을 지원 하지 않 으 며, 트 랜 잭 션 이 있 으 면 이상 을 던 집 니 다)
위의 요약 에 따 르 면 하나의 방법 으로 spring 사 무 를 사용 할 때 같은 종류의 다른 spring 사 무 를 사용 하 는 방법 을 사용 할 때 호출 된 방법의 사 무 는 유효 하지 않 습 니 다. 그런데 왜 일 까요?아직 답 을 찾 을 단 서 를 찾 지 못 했 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
10. assert, guard, 프로토콜특정 조건을 체크하고, 조건이 성립되지 않으면 메시지를 출력하게 할 수 있는 함수로, 디버깅 모드에서만 동작 무엇인가를 검사하여 그 다음에 오는 코드를 실행할지 말지 결정하는 것으로, guard문에 주어진 조건문이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.