Tôi muốn chạy một số mã khi khởi động để lưu trước một số nội dung và cũng muốn bắt đầu Bộ hẹn giờ để lưu lại một số thứ bên ngoài đường dẫn quan trọng của yêu cầu web. Điều này có thể thực hiện được với Khung Chơi và nơi tôi đặt mã này?Tôi nên đặt mã khởi động trong Play Framework ở đâu?
Trả lời
Bạn cần tạo công việc khởi động sẽ được thực hiện bằng cách phát lúc khởi động ứng dụng.
@OnApplicationStart
public class Bootstrap extends Job {
public void doJob() {
//do stuff
}
}
Đọc thêm về cách thực hiện việc này trong Play Manual.
Trong play framework 2.0 trở lên, sử dụng GlobalSettings, như đoạn mã sau:
import play.*;
public class Global extends GlobalSettings {
@Override
public void onStart(Application app) {
Logger.info("Application has started");
}
@Override
public void onStop(Application app) {
Logger.info("Application shutdown...");
}
}
biết thêm thông tin, hãy đến playframework docs: JavaGlobal
Đừng quên rằng mã thể hiện trong các câu trả lời trên có nằm trong gói cơ sở của ứng dụng (không có thông số gói). (Tôi đang chạy Khung Chơi 2.3.2).
Ngoài ra, mã sẽ không được chạy ở chế độ nhà phát triển cho đến khi yêu cầu HTTP đầu tiên được thực hiện!
Trong trường hợp của tôi mã của tôi là thế này:
import play.*;
public class Global extends GlobalSettings {
@Override
public void onStart(Application app) {
String message = "Application has started! LOLADA";
Logger.info(message);
System.out.println(message);
}
@Override
public void onStop(Application app) {
String message = "Application shutdown...!!! LOLADA";
Logger.info(message);
System.out.println(message);
}
}
Nằm trong cơ cấu dự án như thế này:
(Tôi đang sử dụng IntelliJ IDEA).
Xin chào, tôi dự định sử dụng Play 2.4, có vẻ như Công việc không đồng bộ đã bị xóa khỏi nó? Nếu đó là trường hợp, bạn có biết một cái gì đó có thể thực hiện giống nhau không? – iCodeLikeImDrunk
https://www.playframework.com/documentation/2.4.x/GlobalSettings – Isn0gud
"application.global" có thể được sử dụng trong tệp application.conf để đặt tệp chung ở mọi nơi – Anirudh
Trong Play 2.4. + Bạn nên sử dụng tiêm phụ thuộc với móc vòng đời (tùy chọn). Phát sẽ tự động sử dụng bất kỳ lớp nào được gọi là Module
có trong gói gốc.
Ví dụ:
app/ApplicationStart.scala:
import scala.concurrent.Future
import javax.inject._
import play.api.inject.ApplicationLifecycle
// This creates an `ApplicationStart` object once at start-up and registers hook for shut-down.
@Singleton
class ApplicationStart @Inject() (lifecycle: ApplicationLifecycle) {
// Shut-down hook
lifecycle.addStopHook {() =>
Future.successful(())
}
//...
}
app/Module.scala:
import com.google.inject.AbstractModule
class Module extends AbstractModule {
override def configure() = {
bind(classOf[ApplicationStart]).asEagerSingleton()
}
}
Nhiều tài liệu của mô hình này trong Playframework docs.
Dưới đây là ví dụ in an application.
- 1. Tôi nên đặt scriptmanager ở đâu
- 2. Tôi nên đặt plugin .vim ở đâu?
- 3. Phương thức isAjax() trong Play Framework 2.0 ở đâu?
- 4. Nên đặt beans.xml ở đâu?
- 5. Khởi động ở đâu?
- 6. Tôi nên đặt các tệp cấu hình IPython ở đâu?
- 7. Mã django nên ở đâu?
- 8. Tôi nên đặt mã phụ trợ không phục hồi lại của tôi ở đâu?
- 9. Mẫu jQuery - tôi nên đặt chúng ở đâu?
- 10. Tôi nên đặt chỗ tĩnh tĩnh công cộng ở đâu?
- 11. Tôi nên đặt mocks của mình ở đâu?
- 12. MEF: Tôi nên đặt bộ phận sắp xếp ở đâu?
- 13. Tôi nên đặt lớp cơ sở trống ở đâu?
- 14. Tôi nên đặt AngularJS Nhà máy & Dịch vụ ở đâu?
- 15. Tôi nên bao gồm normalize.css ở đâu?
- 16. Tôi nên đặt url trang web của mình ở cài đặt django ở đâu?
- 17. Java: Tôi nên đặt mã logic của người nghe ẩn danh ở đâu?
- 18. Chơi Framework 2.0 - jsAction ở đâu?
- 19. Session.id ở đâu trong Play 2.0?
- 20. IQueryable ở đâu trong .NET Compact Framework?
- 21. Phương thức khởi động của Dịch vụ WCF ở đâu?
- 22. Gói thanh toán Google Play ở đâu?
- 23. Tôi bắt đầu với Zend Framework ở đâu?
- 24. Tôi nên đặt kế hoạch chi tiết của tôi ở đâu trước số
- 25. Tôi nên đặt thư viện javascript trong ứng dụng Grails ở đâu?
- 26. Tôi có thể báo cáo lỗi Net Framework ở đâu.
- 27. C++ "xóa" chậm. Tôi nên nhìn đầu tiên ở đâu?
- 28. Android - Hoạt động so với ListActivity - Lớp hoạt động của tôi nên mở rộng ở đâu?
- 29. Tôi đặt "WSGIPassAuthorization On" ở đâu?
- 30. Tôi nên đặt hình dạng ở đâu trong các thư mục Android của mình?
[Phiên bản Scala của tài liệu, cho 2.3.x] (https://www.playframework.com/documentation/2.3.x/ScalaGlobal) – mjswensen
tối đa 2.4 có lẽ, 2.5 sử dụng di với ApplicationLifecycle – Jasonw
Điều này không được chấp nhận trong 2.6.x: https://www.playframework.com/documentation/2.6.x/GlobalSettings – Spen