springboot 에서 @ Async 에 유사 한 트 랜 잭 션 주석 이 적용 되 지 않 는 문제 가 발생 할 수 있 습 니까?
8738 단어 sprintbootspringboot
트 랜 잭 션 주 해 는 일반적으로 호출 과 관련 이 없습니다. 예 를 들 어 다음 과 같은 상황 에서 this 호출 로 컬 에 트 랜 잭 션 주 해 를 추가 하 는 방법 을 사용 하면 이러한 상황 은 무효 입 니 다.
@Service
class A {
public void testB() {
this.testC();
}
@Transactional
public void testC() {
}
}
그럼 문제 가 생 겼 습 니 다. @ Async 주해 도 주해 가 유효 하지 않 습 니까?
테스트 코드 는 다음 과 같 습 니 다:
@Controller
@RequestMapping("/test")
public class Testpush {
@Autowired
private AsynService asynService;
@Autowired
private ApplicationContext appContext;
@PostMapping("/asyn")
@ResponseBody
public String testAsyn(@RequestBody String a) {
System.out.println(Thread.currentThread().getName());
System.out.println();
long start = System.currentTimeMillis();
asynService.testAsyn();
System.out.println(" :" + (System.currentTimeMillis() - start));
return " !";
}
}
@Service
interface AsynService {
void testAsyn();
void syn();
}
@Service
class AsynServiceImpl implements AsynService {
@Override
public void testAsyn() {
this.syn();
}
@Async
public void syn() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
마지막 호출 출력 결 과 는:
http-nio-21002-exec-2
:5001
최종 결론 은: this 호출 에 @ Async 주 해 를 추가 하 는 방법 으로 @ Async 가 유효 합 니 다!
주의: 주입 방식 으로 자신의 방법 을 호출 할 때 다음 과 같은 방식 을 사용 할 수 있 습 니 다.
AsynService bean = appContext.getBean(AsynService.class);
bean.syn()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring Tool Suite (STS) 설치, 일본어 및 Gradle 플러그인 추가 단계Spring 애플리케이션 개발을 위한 통합 개발 환경으로 Spring Tool Suite(STS)를 설치하는 절차를 설명합니다. 필요에 따라 일본어화와 Gradle 플러그인을 추가하는 절차도 이용하십시오. 설치 대상...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.