Я был в таком же положении, что и вы, и я продолжал работать с Spring: все получилось просто отлично. Единственное раздражение в том, что моя IDE (IntelliJ IDEA) имеет встроенную поддержку Spring и помечает мои конфигурационные файлы Spring как полные ошибок, когда они в порядке.
Я обнаружил, что единственное, что я могу сделать вместо внедрения нескольких сервисных реализаций через Spring, - это использовать состав функциональности с использованием trait
s в Scala. Например, вместо использования:
public SomeBusinessClass {
private PersistenceService dao;
private ValidationService validator;
//setters, business logic etc
}
Я мог бы использовать:
public class SomeBusinessClass extends Persistence with Validation {
@BeanProperty
var dataSource: DataSource = _
}
Хотя это не совсем так, как гибкий как версия Java, для большинства приложений гибкость переключения между реализациями сервисов не является действительно необходимой. Однако он все еще сохраняет тот факт, что постоянный код не смешивается с остальной частью бизнес-логики.