9C BLOG
인터페이스 크론 에러 본문
MethodInvokingJobDetailFactory를 사용하여 context-cron.xml에 스케줄을 등록하여 인터페이스를 사용하고 있었다.
<bean id="scheduleJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="taragetObject" ref="scheduleService"/>
<property name="targetMethod" value="getScheduleCmd01"/>
<property name="concurrent" value="false"/>
</bean>
<bean id="scheduleJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="scheduleJob"/>
<property name="cronExpression" value="0 * * * * * *"/>
</bean>
<bean id="scheduleJobScheduler" class="org.springframewokr.scheduling.quartz.ScheduleFactoryBean">
<property name="triggers">
<list><ref bean="scheduleJobTrigger"/></list>
</property>
</bean>
일부 서비스를 개선하며 메소드에 파라미터 값을 받게 변경하였고 해당 메소드는 scheduleJob의 targetMethod의 value로 들어가도록 하였다.
그런데 여기서 계속 해당 메소드를 찾을 수 없다고 NoSuchMethodException 에러가 발생하였다.
에러에서는 getScheduleCmd01() 메소드를 찾고있었고 실제로 사용되는 메소드는 getScheduleCmd01(HttpServletRequest request)로 사용되고 있었다.
이름값으로 찾으니까 이게 문제가 아니겠지하고 다른 문제를 찾고있었는데 아무리봐도 다른 문제는 없다!!
몇시간을 씨름하다보니 이게 문제가 맞았다,,,
해당 파라미터 받는 부분을 제거하니 정상적으로 진행이 된다,,,
다시 생각해보니 Service의 클래스는 해당 클래스 자체의 이름으로 빈이 등록되지만 찾으려는 부분은 서비스 자체가 아니라 메소드이니까 이름뿐만 아니라 메소드의 파라미터까지 맞춰줘야 하는게 맞는거 같다.
'STUDY > Spring' 카테고리의 다른 글
RestTemplate 한글 깨짐 (0) | 2023.11.23 |
---|---|
redirect 시 데이터 전달하기 (0) | 2023.10.26 |
Spring Filter에서 호출 빈도 줄이기 작업 (0) | 2023.10.05 |
MyBatis 제대로 맵핑되지 않을 때 (0) | 2023.06.27 |
session expired 처리 (0) | 2023.04.12 |
Comments