其實我有一個如下的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