Я большой поклонник Injection Dependency и Play Framework, но мне трудно понять, как эти два могут быть использованы вместе.
Существуют модули для Spring и Guice, но способ, которым работает Play, усложняет мне, как DI может быть полезен за некоторыми довольно простыми случаями.
Хорошим примером этого является то, что Play ожидает, что работа JPA будет выполняться статическими методами, связанными с данным объектом:
@Entity
Person extends Model {
public static void delete(long id) {
em().find(id).remove();
}
//etc
}
Таким образом, не нужно вводить PersonManager
в контроллеры так, как это возможно для приложения Spring J2EE. Вместо этого контроллер просто вызывает Person.delete(x)
.
Очевидно, что DI полезен, когда есть интерфейсы с внешними системами, поскольку конкретную реализацию можно издеваться над тестированием и т.д., но я не вижу большой пользы для автономного приложения Play.
Есть ли у кого-нибудь хорошие примеры? Кто-нибудь использует его, чтобы внедрить класс Manager
-style в Controller
, чтобы можно было выполнить несколько операций в рамках одной транзакции, например?