12

मैं सेटअप करने के लिए एक @Configurable डोमेन वस्तु (नहीं वसंत कंटेनर द्वारा प्रबंधित) कोशिश कर रहा हूँ।
मैं एक JVM तर्क के रूप में -javaagent:path/to/spring-instrument.jar जोड़कर इस काम कर मिल गया है, लेकिन यह नहीं 100% मेरे लिए स्पष्ट है या नहीं, इस -javaagent जगह पर होना चाहिए। मैं बिलाव 8. मैं documentation की गलत व्याख्या की जा सकती है पर यह चल रहा हूँ, लेकिन यह मैं, यह पूरा करने के लिए एक एक और तंत्र का उपयोग करने के लिए विशेष इस पंक्ति में सक्षम हो सकता है लगता है:टॉमकैट 8, स्प्रिंग बूट, @ कॉन्फिगर करने योग्य लोडटाइम बिना -जवाज के बिना?

TomcatInstrumentableClassLoader अब Tomcat 8.0 पर परिभाषित नहीं है और अधिक है। इसके बजाय, वसंत स्वचालित रूप से TomcatLoadTimeWeaver रणनीति के माध्यम से बिलाव के नए देशी InstrumentableClassLoader सुविधा का इस्तेमाल करते हैं।

कोड नीचे नमूने:

@SpringBootApplication 
@EnableLoadTimeWeaving 
public class TestApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(TestApplication.class, args); 
    } 
    @Bean 
    public MyService myService(){ 
     return new MyService(); 
    } 
} 

@Configurable 
public class MyDomainObject { 

    @Autowired 
    private MyService myService; 

    public MyService getMyService(){ 
     return myService; 
    } 
} 

public class MyService { 
    private static final Logger log = LoggerFactory.getLogger(MyService.class); 

    public void test(){ 
     log.info("test"); 
    } 
} 

तो वहाँ एक तरह से इन @Configrable -javaagent निर्दिष्ट किए बिना बुना वस्तुओं को पाने के लिए है? मैं अगर मैं ऐसा कर सकते हैं जब एक स्टैंडअलोन बिलाव 8 सर्वर से युद्ध के रूप में तैनाती और/या जब एक 'फैट' जार के रूप में शुरू करने एम्बेडेड बिलाव 8 सर्वर का उपयोग कर के बारे में जानना चाहते हैं।

इसे अकेले बिलाव 8 सर्वर खड़े हो जाओ करने के लिए एक त्रुटि लेकिन अशक्त रिटर्न ऊपर getMyService() विधि फेंक नहीं है की तैनाती खड़ा है। शुभारंभ के रूप में एक वसा जार स्टार्टअप के दौरान निम्न त्रुटि फेंकता है:

Caused by: java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher$AppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar

मुझे लगता है असली सवाल यह है कि कैसे करना है मैं बिलाव 8 में Specify a custom LoadTimeWeaver? प्रलेखन राज्यों के रूप में स्वचालित रूप से कुछ भी नहीं हो रहा है लेकिन फिर से मैं गलत तरीके से गलत व्याख्या कर सकता हूं जिसका अर्थ है।

+1

मेरे पास अभी भी यही समस्या है, क्या आपने इसे हल किया है? दुर्भाग्य से मैंने – alexanoid

+0

@alexanoid नहीं किया है – mjj1409

उत्तर

-2

क्या अपनी खुद की व्याख्या @MyConfigurable बनाने के बारे में? इसलिए जब आप विधियों को बुलाते हैं तो आप जो भी चाहें कर सकते हैं।

import java.lang.annotation.ElementType; 
import java.lang.annotation.Retention; 
import java.lang.annotation.RetentionPolicy; 
import java.lang.annotation.Target; 

@Target(ElementType.CONSTRUCTOR) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface MyConfigurable 
{} 
संबंधित मुद्दे