2013-02-20 2 views
0

내 응용 프로그램은 비즈니스 로직에 따라 고객에게 (향후) 알림을 보내야합니다. 데이터베이스의 일부 baisc 정보 (SMSJob 또는 EmailJob과 같은 작업으로 호출)를 사용하여 이러한 모든 알림을 저장해야합니다. 하나의 열에는 각 특정 작업에 대한 클래스 이름이 있습니다. 이제 데이터베이스를 쿼리하고 모든 작업을 선택하고 하나씩 실행하기 시작하는 또 다른 로직이 있습니다. Mikhail과 Arsen이 제안한 것처럼 반성을 사용하여 클래스 이름을 기반으로 모든 클래스의 인스턴스를 만들 수 있습니다.데이터베이스의 클래스 이름을 기반으로 코드를 실행하는 방법

코드와 관련하여 비슷한 내용이 있습니까? 너트 쉘 (shell)에서 저는 쿼츠 (quartz)가 증명하는 유사한 기능을 구현하려고합니다. 나는 매우 엄격한 일정을 가지고 있으므로 기사 나 코드에 대한 언급이 도움이 될 것입니다.

미리 감사드립니다.

+0

자세한 정보를 제공해주십시오. 이것은 너무 모호합니다. "_run some jobs_"이라고 말하면 "무슨 일을해야합니까?"라고 할 때 무슨 뜻인가요? – jahroy

+0

이 더 명확하게 업데이트되었습니다. – Ashu

답변

3

리플렉션을 사용해야합니다. 수업은 Runnable 인터페이스를 구현하는 경우, 다음과 같이 수행

Class <?> clazz = Class.forName (classNameFromDB); 
Runnable runnable = (Runnable)clazz.newInstance(); 
runnable.run(); 
+0

'(() Class.forName (n)). newInstance(). run();'? –

0

수업 예를 들어 execute() 방법으로 그들에 대한 몇 가지 기본 인터페이스를 오버라이드 (override) 할 필요가있다. 그리고 데이터베이스에서 다시 가져온 후에 리플렉션을 사용하여이를 실행할 수 있습니다.

관련 문제