其实我有一个如下的spring主类。当类对象是新的时,无法使用@spring注解
ClassLoader loader = null;
try {
loader = URLClassLoader.newInstance(new URL[]{new
File(plugins + "/" + pluginName + "/" + pluginName +
".jar").toURI().toURL()}, getClass().getClassLoader());
} catch (MalformedURLException e) {
e.printStackTrace();
}
Class<?> clazz = null;
try {
clazz = Class.forName("com.sample.Specific", true, loader);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Method method = null;
try {
method = clazz.getMethod("run",new Class[]{});
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
try {
method.invoke(clazz.newinstance,new Object[]{});
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
特定类是遵循:
package com.sample
@Service
public class Specific {
@Autowired
private FD fd;
public void run(){
fd.init();
}
}
@Autowired
FD
来为空。任何人都可以给我一些解决方案,因为我也知道新的运营商不会为@autowired
工作。当我用新实例加载类时,只有它变为空。任何人都可以引导我在这个东西
不要使用新的运营商,并注入在你需要它的特定类。如果您想在Spring Boot应用程序启动后立即运行某些内容,请查看ApplicationRunner接口。 – dunni
@dunni - 其实我正在使用java反射来加载类,其中我必须创建新的实例。所以,它使新的实例和自动装配fd null。这个代码对我们来说就像一个例子。 –
然后,你应该发布一个例子,更好地反映你的情况。 – dunni