Gọi các object của Autowired Collections theo thứ tự trong Spring Framework

965

Bài viết được sự cho phép của smartjob.vn

Đây là tính năng mới bổ sung từ phiên bản 4.0 của Spring Framework. Chúng ta có một Collections chứa các bean (mỗi bean này đều được gán annotation @Autowired ). Để xếp thứ tự xử lý khởi tạo object từ bean, ta gán Annotation @Order  đứng trước bean kèm theo số thứ tự được gọi đến. Số thứ tự này không nhất thiết phải theo tuần tự 1,2,3…. chúng ta có thể gán thứ tự 1, 5, 9, 42, v…

  04 Điều Cần Chú Ý Cho Người Mới Làm Automation Test
  Automation skills cho tester già mà lười

Chúng tôi sử dụng các công cụ, thư viện mới nhất tại thời điểm viết bài, cùng với định hướng sử dụng các best-practice khi viết mã nguồn.
Công cụ
– IntelliJ IDEA 2016.1.2
– Gradle build system 2.13

Thư viện:
– Spring Framework version 4.2.6.RELEASE (spring-core, spring-context)

Khởi tạo project:

Khai báo GAV (Group – ArtifactId – Version) cho ứng dụng đang thực hiện

Thiết lập các tùy chọn liên quan đến Gradle build system

Khuôn mẫu project sử dụng Gradle build system mà bạn thấy là chưa đầy đủ. Bạn cần tạo thêm 7 thư mục mới (src, main, test, java, resources) theo cấu trúc quy ước như sau:

Bởi vì bạn làm đúng theo quy ước, nên sau khi thêm thư mục mới vào project, các icon thư mục tự chuyển sang hình icon khác, trực quan, tương ứng với mục đích sử dụng.

Sửa lại file build.gradle trở thành:

  • Tại dòng 1, Khai báo ứng dụng autowiredOrder thuộc nhóm các ứng dụng do SmartJob.vn sản xuất.
  • Tại dòng 2, Khai báo phiên bản ứng dụng autowiredOrder là 1.0.0 và đang trong quá trình phát triển. Hậu tố -SNAPSHOT nhắc nhở build system (Gradle hoặc Maven) rằng luôn phải gọi ra autowiredOrder (với tư cách là một dependency) mới mỗi lần sử dụng (không sử dụng dữ liệu cache), do ứng dụng đang trong quá trình phát triển.
  • Tại dòng 6, Khai báo môi trường thực thi ứng dụng là Java 8, nếu môi trường thực thi (server, PC) sử dụng Java 7 chẳng hạn, ứng dụng autowiredOrder sẽ không chạy được. Và tất nhiên, khi môi trường thực thi là Java 8 thì bạn phải sử dụng Java từ phiên bản 8 trở lên để biên dịch cũng như đóng gói ứng dụng.
  • Tại dòng 13 và 14, ứng dụng sử dụng dependency spring-core và spring-context với phiên bản mới nhất hiện tại 4.2.6.RELEASE

class Company . Một công ty sẽ đăng tuyển nhiều job. List job được gán annotation @Autowired để Spring Framework nhận diện đối tượng được Autowire, được gọi ra ở dòng 11 trong class App : Company company = applicationContext.getBean(Company.class);

Class Job

Mỗi job sẽ được sắp xếp, phân nhóm theo các chuyên môn khác nhau. Dưới đây chúng ta tạo 3 loại job là JavaJob , PHPJob , CsharpJob . Các job đều có điểm chung nhất định và kết thừa từ abstract class Job .

Class JavaJob

Class PHPJob

Class CsharpJob

Như đã nói trong bài viết Kỹ thuật Autowiring sử dụng annotation trong Spring Framework, có 3 cách để Autowire bean. Trong bài viết này chúng ta cấu hình sử dụng code Java bởi class có tên là   Config  (cách đặt tên là tùy chọn)

Class ứng dụng chính App

Chúng ta thấy thứ tự xuất hiện là: CsharpJob, JavaJob và cuối cùng là PHPJob, tương ứng với giá trị Order  của chúng là 2, 3 và 42.

Download source code: autowiredOrder hoặc clone/fork từ GitHub: https://github.com/SmartJobVN/autowiredOrder

Bài viết gốc được đăng tải tại smartjob.vn

Có thể bạn quan tâm:

Xem thêm Jobs Developer hấp dẫn trên TopDev