我有两个工作方式不同的项目。第一个用于类加载,第二个有其类用于执行一些处理工作。
在第一个项目中,我加载该类,而不是创建新实例来调用该方法,我仅使用应用程序上下文。
@Autowired
ApplicationContext context;
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(context.getBean(clazz),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();
}
}
正如我所提到的,这是两个不同的项目。因此,当我使用 Main class 运行第一个项目时,它会说——
考虑在您的中定义一个“com.sample.Specific”类型的 bean
配置。
我怎样才能创建bean?
这是因为您无法找到此类,在组件扫描配置中,您需要声明 bean 所在的包。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)