我試圖設置一個@Configurable
域對象(不是由spring容器管理)。
我已經得到了這個工作,將-javaagent:path/to/spring-instrument.jar
作爲JVM參數加入,但它並不是100%清楚這個-javaagent是否必須到位。我在Tomcat 8.我可能誤解了documentation運行這一點,但似乎我可能可以使用另一種機制來做到這一點,尤其是這行:Tomcat 8,Spring Boot,@Configurable LoadTimeWeaving without -javaagent?
不要
Tomcat 8.0
定義TomcatInstrumentableClassLoader
了和更高。相反,讓Spring通過TomcatLoadTimeWeaver
戰略自動使用Tomcat的新本地InstrumentableClassLoader
工具。
程式碼例子:
3210@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");
}
}
那麼,有沒有辦法讓不指定-javaagent編織這些@Configrable對象?如果在將WAR部署爲Standalone Tomcat 8服務器和/或使用嵌入式Tomcat 8服務器作爲「胖」jar啓動時能夠完成此任務,我會對此感興趣。
因爲它站在部署到獨立的Tomcat 8服務器不會引發錯誤,但上面的getMyService()
方法返回null。啓動作爲脂肪罐子啓動過程中引發以下錯誤:
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
我想真正的問題是我怎麼Specify a custom LoadTimeWeaver
在Tomcat中8?文檔狀態似乎沒有任何事情會自動發生,但我可能會誤解正確的含義。
我現在有同樣的問題,你解決了嗎? – alexanoid
@alexanoid不幸的是我沒有 – mjj1409