당신은 출발점으로 다음과 같은 게시물을 고려해 볼 수 있습니다 : https://stackoverflow.com/a/2575156/471129
기본적으로, 의존성 주입 및 제어의 반전은 외부의 구성을 지정하고 동적으로 무엇처럼 보인다, 다른 jar 파일에서 종종 코드를로드하는 데 사용됩니다 너는하려고하는거야. 물론
, 당신은 항상 이런 일에 클래스 이름으로 코드를로드 할 수
public interface IPlugin {
// some methods that all the plugins will have in common
}
private static IPlugin loadIPluginByClassName(String plugInClassName, ClassLoader classLoader) {
// NOTE: throws NoClassDefFoundError or ClassNotFoundException if cannot load the class
// or throws ClassCastException if the loaded class does not implement the interface
Class<?> cls = classLoader.loadClass(plugInClassName);
IPlugin ans = (IPlugin) cls.newInstance()
return ans;
}
당신은
같이 패키지 자격을 갖춘 클래스 이름과 클래스 로더 loadIPluginByClassName()를 호출해야합니다
IPlugin pi = loadIPluginByClassName("com.test.something.MyPlugin", SomeClassInYourProject.class.getClassLoader());
플러그인은 .jar이 클래스 경로에있는 한 자체 .jar 일 수 있습니다.
외부의 .jar에서 그들을로드하지 않으려면, 당신이 사용할 수있는이 그러한 일 수에 도움이 될 수있는 플러그인 클래스에 대한 직접 참조 (생성
IPlugin pi = loadIPluginByClassName(MyPlugin.class.getName(), SomeClassInYourProject.class.getClassLoader());
간단 참고로 발견)
음. 기본 디자인 작업처럼 들리지만, 실제로 해결해야하는 문제입니다. 그것은 정말로 당신의 요구 사항이 무엇인지에 달려 있습니다. –