# transcode() 메소드를 Job으로 이동에 따른 부수 작업
- transcode() 메소드가 jobId를 파라미터로 전달 받았으나, 이제는 그럴 필요가 없어짐. jobId를 알고 있는 건 Job 객체이기 때문이다.
- transcodingExceptionHandler가 필요했던 이유는 TranscodingServiceImple이 에러 사실을 Job에게 알리기 위함이었으나, 위 코드가 Job내부에서 실행되므로 이제 에러가 발생하면 Job이 알게 된다. 따라서 기존에 존재하던 try-catch 블록은 transcode() 메소드에만 위치하면 되며, 나머지 다른 메서드의 try-catch는 필요 없다. 또한 transcodingExceptionHandler도 필요 없다.
- jobStateChanger가 필요했던 이유는 TranscodingServiceImpl에서 job의 상태를 변경하기 위함이었다. 하지만 Job객체가 실행 흐름을 제어하므로 스스로 상태를 변경할 수 있게 되었다. 따라서 jobStateChanger가 필요 없다. 또한 chnageState() 메소드가 있으므로 changeJobState() 메서드는 더 이상 필요 없다. transcode()메서드 내부에서 changeJobState()메서드 대신 changeState() 메서드를 호출하도록 변경한다.
- mediaSourceCopier, jobResultNotifier 등의 협업 객체는 transcode() 메서드를 통해서 전달받도록 하고, transcode() 메서드가 다시 알맞은 협업 객체를 전달해주는 방식으로 바꾼다.
# Job객체의 id필드는 항상 null이다. 그래서, 테스트 코드의 Mock 객체들이 동작을 안 한 것이다. 이는 Job객체의 id필드를 1로 할당해주는 것으로 해결
# transcode() 메서드의 할일을 job 객체로 위임한다.
# 	불필요한 협업 객체 삭제
# 	불필요한 협업 객체 삭제
# 이제는 사용하지 않는 doAnswer구문 삭제
# changeState(), exceptionOccurred() 메소드는 더이상 외부에서 호출하지 않기 때문에 접근자 변경