0
@Async
메서드로 @After 및 @Around를 사용할 수 있습니까?
는이 같은 주석의 모두 시도 : 부분이 방법 끝나기 전에이라고Async 메서드에서 Spring AOP 사용
@Override
@SetUnsetEditingFleet
public void modifyFleet(User user, FleetForm fleetForm) throws Exception{
databaseFleetsAndCarsServices.modifyFleet(user, fleetForm);
}
@Around("@annotation(SetUnsetEditingFleet) && args(user, fleetForm)")
public void logStartAndEnd(ProceedingJoinPoint pjp, User user, FleetForm fleetForm) throws Throwable{
fleetServices.setEditingFleet(fleetForm.getIdFleet());
for(Car car : carServices.findByFleetIdFleet(fleetForm.getIdFleet())){
carServices.setEditingCar(car.getIdCar()); //Set cars associated with the fleet
}
pjp.proceed();
fleetServices.unSetEditingFleet(fleetForm.getIdFleet());
for(Car car : carServices.findByFleetIdFleet(fleetForm.getIdFleet())){
carServices.unSetEditingCar(car.getIdCar()); //Unset cars associated with the fleet
}
}
@Override
@Async
@Transactional(rollbackFor=Exception.class)
public void modifyFleet(User currentUser, FleetForm fleetForm) throws Exception {
//method instructions
애프터. @After
및 @Before
주석을 사용하여 시도한 결과도 같습니다.
가능한지 알고 계십니까?
처리가 새 스레드로 전달 되었기 때문에 메서드가 종료되었습니다. 따라서 호출 코드의 경우 메소드 실행이 종료되었습니다. 네, 당신이 그것을 사용할 수는 있지만, 당신이 그것을 사용하고 싶지 않습니다. –
그래서'@ Before' 만 사용할 수 있습니다.'@ After' 부분은 새 스레드가 시작된 후에 호출되며 끝 부분은 호출되지 않습니다. 맞습니까? – luca
NO 메소드의 마지막에서 호출됩니다. 메소드는 스레드가 시작하자마자 종료합니다. 호출 코드의 경우 메소드 실행이 끝났습니다. –