Tôi đang cố gắng thiết lập đối tượng miền @Configurable
(không được quản lý bởi vùng chứa lò xo).
Tôi đã làm việc này bằng cách thêm -javaagent:path/to/spring-instrument.jar
làm đối số JVM nhưng không rõ ràng 100% đối với tôi liệu có phải là không thích hợp này hay không. Tôi đang chạy trên Tomcat 8. Tôi có thể hiểu sai các documentation nhưng có vẻ như tôi có thể sử dụng một cơ chế khác để thực hiện điều này, đặc biệt là dòng này:Tomcat 8, Spring Boot, @Configurable LoadTimeWeaving mà không có -javaagent?
Đừng xác định
TomcatInstrumentableClassLoader
nữa trênTomcat 8.0
và cao hơn. Thay vào đó, hãy để Spring tự động sử dụng cơ sởInstrumentableClassLoader
gốc của Tomcat thông qua chiến lượcTomcatLoadTimeWeaver
.
Mẫu Mã dưới đây:
@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");
}
}
Vậy là có một cách để có được các đối tượng này @Configrable dệt mà không chỉ định các -javaagent? Tôi muốn được quan tâm đến việc học nếu tôi có thể thực hiện điều này khi triển khai như WAR tới một máy chủ độc lập Tomcat 8 và/hoặc sử dụng máy chủ Tomcat 8 được nhúng khi khởi chạy như một bình 'chất béo'.
Vì nó đang triển khai cho máy chủ độc lập Tomcat 8 không ném lỗi nhưng phương thức getMyService()
ở trên trả về giá trị rỗng. Tung ra như một lọ mỡ ném lỗi sau khi khởi động:
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
Tôi cho rằng câu hỏi thực sự là làm cách nào để Specify a custom LoadTimeWeaver
trong Tomcat 8? Không có gì có vẻ là tự động xảy ra như các tiểu bang tài liệu nhưng một lần nữa tôi có thể hiểu sai những gì có nghĩa là chính xác.
Tôi có vấn đề tương tự ngay bây giờ, bạn đã giải quyết chưa? – alexanoid
@alexanoid thật không may tôi đã không – mjj1409