Tôi muốn lấy id công việc bằng ngôn ngữ biểu hiện mùa xuân. Tôi đã thử #{jobExecutionContext[jobId]}
nhưng nó không hoạt động.Làm cách nào để lấy id công việc bằng ngôn ngữ biểu hiện mùa xuân?
Trả lời
Chỉ sử dụng Spel, không có cách nào để truy cập vào id công việc. Bạn có thể sử dụng một JobExecutionListener để thêm nó vào executionContext và sau đó nó sẽ có sẵn thông qua những gì bạn đang cố gắng.
Ví dụ được làm việc sẽ trông giống như thế này. Lớp JobExecutionListener của bạn có quyền truy cập vào JobExecution và nó sao chép jobId thành executionContext.
public class JobIdToContextExecutionListener implements JobExecutionListener {
public void beforeJob(JobExecution jobExecution) {
long jobId = jobExecution.getJobId();
jobExecution.getExecutionContext().put("jobId",jobId);
}
..
}
Trong bối cảnh mùa xuân của bạn, sau đó bạn có thể tham khảo các jobId qua SpEL như
#{stepExecution.jobExecution.jobId}
hoặc
#{jobExecutionContext.jobId}
Xem Luca's answer on referencing late-binding parameters here.
#{stepExecution.jobExecution.id}
hoặc #{stepExecution.jobExecutionId}
sẽ hoạt động.
StepContextkhông cung cấp quyền truy cập vào StepExecution để kết buộc muộn thông qua biểu thức SpEL.
Sử dụng phạm vi = "bước" và sau đó biểu thức trong truy vấn của bạn (hoặc thông số của nó): # {stepExecution.jobExecution.id} (gốc của biểu thức là StepContext).
- 1. Xử lý giá trị null trong mùa xuân biểu hiện ngôn ngữ
- 2. Làm cách nào để tham số hóa @Scheduled (fixedDelay) bằng ngôn ngữ biểu thức Spring 3.0?
- 3. Một số sử dụng hợp lệ cho spel (Ngôn ngữ biểu hiện mùa xuân) là gì?
- 4. Làm thế nào để thực hiện công việc ngay sau khi tải ngữ cảnh ứng dụng vào mùa xuân?
- 5. Ngôn ngữ biểu thức mùa xuân (Spel): phân tích chuỗi thành int
- 6. Lấy ID phiên có bảo mật mùa xuân
- 7. Làm cách nào để triển khai ngôn ngữ có cùng ngôn ngữ nhanh hơn ngôn ngữ?
- 8. Ngữ cảnh phân cấp mùa xuân
- 9. Làm cách nào để thực hiện việc tham gia trái trong Ngôn ngữ truy vấn Hibernate?
- 10. biểu hiện mùa xuân đọc nội dung tập tin
- 11. JavaScript thoát bằng ngôn ngữ biểu thức
- 12. Làm cách nào để hiển thị ngôn ngữ (ngôn ngữ) hiện tại ứng dụng Android?
- 13. Có phạm vi "công việc" hàng loạt mùa xuân không?
- 14. Làm thế nào để cấu hình mùa xuân RestTemplate với SSL (trong mùa xuân @MVC)
- 15. Truyền bằng Ngôn ngữ Biểu thức
- 16. Ứng dụng web đa ngôn ngữ - làm cách nào để phát hiện ngôn ngữ của người dùng trong ASP.NET?
- 17. Tiêm đậu mùa xuân bằng CDI @Inject
- 18. Cách tự động lấy đối tượng Môi trường Mùa xuân
- 19. Phát hiện ngôn ngữ
- 20. Làm thế nào để Tìm một ngày hiện tại bằng ngôn ngữ c?
- 21. Cách "tắt" ngữ cảnh mùa xuân thích hợp trong J2SE
- 22. Làm cách nào để đẩy $ bằng cách sử dụng MongoRepository trong Dữ liệu Mùa xuân?
- 23. Làm thế nào để tiêm JPA EntityManager bằng cách sử dụng mùa xuân
- 24. Thực hiện SSO bằng cách sử dụng CAS + Bảo mật mùa xuân
- 25. Chọn một công việc dựa trên ngôn ngữ?
- 26. Lấy dữ liệu i18n bằng ngôn ngữ dự phòng
- 27. Có cách nào để truy xuất mục Sitecore bằng ngôn ngữ khác với ngữ cảnh hiện tại không?
- 28. Bảo mật mùa xuân: setUserPrincipal theo cách thủ công
- 29. Lazy/Háo hức tải/lấy trong Neo4j/mùa xuân-Data
- 30. cách tắt hộp kiểm biểu mẫu mùa xuân?
Bạn có thể cung cấp bất kỳ mã/liên kết mẫu nào không? –
Xem ví dụ được làm việc bên dưới – emeraldjava
@MichaelMinella Câu trả lời này khá cũ, tôi nghĩ rằng nó đáng để cập nhật. Cả '# {jobExecution.jobInstance.instanceId}' và '# {jobExecution.jobId}' đều cung cấp giá trị của id cá thể cho tôi. – jihor