Asked Jun 12th, 2018 2:56 AM 172 1 1
  • 172 1 1
+1

Java 10 vs Spring Framework 3.x

Share
  • 172 1 1

Mình đang thực hiện investigation việc chuyển sang sử dụng java 10. Project hiện tại đang sử dụng java 8 và spring framework 3.x. Khi thực hiện build project bằng JDK 10 thì phát sinh khá nhiều lỗi liên quan tới conflic vs nested giữa các thư viện. Hiện tại mình đã upgrade lên Spring framework 5.x và một sỗ lỗi đã được giải quyết, tuy nhiên các lỗi khác lại phát sinh mới. Vậy mình muốn hỏi có lộ trình nào tốt có thể control được khi migration từ source (java 8 + spring framework 3.x) lên java 10.

1 ANSWERS


Answered Jun 12th, 2018 7:54 AM
Accepted
+4

Chào bạn, để migration spring framework từ spring 3.x lên spring 5.x mình nghĩ bạn nên xem Migration guide của spring thì đúng hơn. và với spring 5.x thì nó hỗ trợ java 8+ nên mình nghĩ bạn chưa cần update lên java 10. bạn có thể tham khảo guide về Migration lên spring 5.x ở đây https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-5.x hơn nữa bạn cần chi tiết hơn mục đích bạn update lên java 10?. vì java có sự tương thích ngược nên nếu source của bạn viết bằng java 8 thì hoàn toàn có thể chạy dc trên java10. nếu bạn gặp lỗi về conflict dependency >> cho hỏi bạn dùng maven hay gradle để quản lý dependency ?. nếu manven bạn có thể nhìn thấy được các dependency bị conflict bằng sử dụng maven plugin của eclipse, nó sẽ show cho bạn những libs mà bị conflic, và bạn sẽ phải resolved nó bằng cách quyết định sử dụng version nào, và ignore version nào

Share
Minh @TranThaiMinh17
Jun 12th, 2018 8:45 AM

Cảm ơn bác đã trả lời câu hỏi của em ạ !

  • Về mục tiêu là em đang investigate mức độ khả thi khi sử dụng JDK 10 để build project hiện tại. Trong quá trình build thì thì em gặp lỗi như sau ạ : Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.aspectj.AspectJPointcutAdvisor#0': Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.aop.aspectj.AspectJPointcutAdvisor]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.aspectj.util.LangUtil. Em có đọc thì thấy một số nói là Java 10 không tương thích với Spring 3.x nên em đã Migration lên bản mới nhất là 5.x nhưng vẫn xuất hiện các lỗi liên quan tới version => conflict vs nested.
  • Về việc quản lý dependency : Hiện tại project của em đang sử dụng eclipse-userlibraries để quản lí các lib Jar file và build bằng Eclipse luôn ạ. Bác có suggestion gì giúp em việc này với ạ ?
  • Ngoài việc sử dụng các Lib Jar thì bên em còn nhúng cả các schema từ web như hình ạ ? Nếu em chuyển sang build bằng maven thì có control được thư viện nhúng kiểu này không ạ ?
  • Screenshot_4.png
+1
| Reply
Share
David Black @davidblack
Jun 13th, 2018 2:04 AM

Hi bạn, việc bạn update lên spring 5.x mà vẫn còn sử dụng các schemal của spring cũ là không đảm bảo sự tương thíc, các lỗi bạn gặp phải do các thư viện của spring 5.x đã thay đổi nhiều rồi., bạn cần làm khá nhiều thứ để có thể resolved được lỗi trên, và lỗi "nested" là do container của bạn không khởi tạo được. bạn giải quyết việc nâng cấp version mà chưa có investigate về các thư viện bạn đang dùng là thư viện gì?. sự khác nhau của sping 3.x và 5.x quả thật khác rất nhiều. mình nghĩ trước khi làm gì thì bạn nên nghiên cứu sự khác nhau của chúng trước khi thực hiện. còn vs cách làm hiện tại của bạn mình ko thể tìm ra nguyên nhân dc,

và tập chung đến phần AspectJ của spring 3.x và 5.x có gì khác nhau.

+1
| Reply
Share
David Black @davidblack
Jun 13th, 2018 2:06 AM

sử dụng maven nhằm đảm bảo bạn có thể thay đổi nâng cấp version của các library dễ dàng hơn, và supprort bạn nhiều trong việc buiid đóng gói projects.

+1
| Reply
Share