java framework Bean kann beim Laden der Klasse zur Laufzeit nicht erstellt werden



spring boot vs spring 5 (1)

Ich habe zwei Projekte, die anders funktionieren. Die erste wird für das Laden von Klassen verwendet und die zweite Klasse hat ihre Klasse, die für bestimmte Verarbeitungsaufgaben verwendet wird.

Im ersten Projekt lade ich die Klasse und anstatt eine neue Instanz zum Aufruf der Methode zu erstellen, verwende ich nur den Anwendungskontext.

@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();
}

Im zweiten Projekt habe ich dieses Beispiel:

package com.sample

@Service
public class Specific {

@Autowired
private FD fd;


public void run(){

    fd.init();

}

}

Wie ich erwähnt habe, sind dies zwei verschiedene Projekte. Wenn ich also das erste Projekt mit der Hauptklasse starte, dann heißt es:

Erwägen Sie, in Ihrer Konfiguration eine Bean vom Typ 'com.sample.Specific' zu definieren.

Wie kann ich die Bohne erstellen?

https://ffff65535.com


Dies liegt daran, dass Sie diese Klasse nicht finden können. In Ihrer Komponenten-Scan-Konfiguration müssen Sie das Paket angeben, in dem Ihre Beans leben.





spring-boot