У меня уже есть проект Java, в котором я создаю класс компонента в коде и использую ClassLoader для получения экземпляра созданного класса компонента.В этом случае я использую его и перехожу на валидатор Hibernate.Теперь я сделал этот проект как Springboot и выставил конечную точку REST.Но я не могу получить экземпляр компонента из загрузчика классов.Пакеты внутри компонента, который я создаю в коде, выдают ошибку «пакет не существует».Я узнал, что после определенной отладки мне нужно предоставить загрузчик классов для Springboot моему пользовательскому загрузчику классов.Как я могу это сделать?
Я пробовал, как показано ниже: (OfflineValidation является основным классом, который вызывает другой класс, в котором присутствует пользовательский загрузчик классов)
1) super(OfflineValidation.class.getClassLoader());
- Этоне работал
2) Thread.getContext().SystemLoader().getParent();
- не работал
classCode = javaCode;
MemoryClassLoader classLoader = getMemoryClassLoaderInstance(
classCode, uniqueClassName);
dynamicBeanObj = (DynamicBeanInterface) classLoader
.loadClass(uniqueClassName).newInstance();
Метод ниже возвращает мне экземпляр classLoader.Выше строки в другом методе, где я использую этот экземпляр.
private MemoryClassLoader getMemoryClassLoaderInstance(
final String classCode, final String uniqueClassName)
throws java.security.PrivilegedActionException {
MemoryClassLoader classLoader = null;
classLoader = AccessController.doPrivileged(
new PrivilegedExceptionAction<MemoryClassLoader>() {
public MemoryClassLoader run() throws IOException {
return new MemoryClassLoader(uniqueClassName,
classCode);
}
});
return classLoader;
}
Когда я запускаю приложение sprintboot, приложение работает, но динамическийBean, который создается, дает для пакетов ниже, поскольку не существует.У меня есть зависимость POM, но я думаю, что Springboot также имеет свой собственный загрузчик классов, и, как я создал собственный ClassLoader, как я могу дать ссылку на springboot classLoader для моего classLoader
import javax.validation.constraints.Size;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;