java रनटाइम पर कक्षा लोड करते समय बीन बनाने में असमर्थ



spring spring-mvc (1)

मेरे पास दो परियोजनाएं हैं जो अलग-अलग काम करती हैं I सबसे पहला क्लास लोडिंग के लिए उपयोग किया जाता है और दूसरा वाला का क्लास होता है जिसका उपयोग कुछ प्रसंस्करण कार्य करने के लिए किया जाता है।

पहली परियोजना में मैं कक्षा लोड कर रहा हूं और इस पद्धति को लागू करने के लिए नया उदाहरण बनाने के बजाय मैं केवल अनुप्रयोग संदर्भ का उपयोग कर रहा हूं।

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

}

}

जैसा कि मैंने उल्लेख किया है ये दो अलग-अलग परियोजनाएं हैं। इसलिए जब मैं मुख्य वर्ग के साथ पहला प्रोजेक्ट चलाता हूं, तो यह कहता है -

अपने कॉन्फ़िगरेशन में टाइप करें 'com.sample.Specific' के बीन को परिभाषित करने पर विचार करें।

मैं बीन कैसे बना सकता हूँ?


इसका कारण यह है कि आप इस वर्ग को अपने घटक स्कैन कॉन्फ़िगरेशन में नहीं पा सकते हैं, जिसमें आपको पैकेज घोषित करने की ज़रूरत है जहां आपके बीन्स रहते हैं।





spring-boot