Yes, Spring offers a lot of flexibility in terms of IoC and testability. I generally avoid Spring for B2C apps. (For B2C apps, I tend to favor Jersey + MyBatis) But for B2B apps and in-house enterprise apps, Spring is a very good candidate.
Yes, Spring offers a lot of flexibility in terms of IoC and testability. I generally avoid Spring for B2C apps. (For B2C apps, I tend to favor Jersey + MyBatis) But for B2B apps and in-house enterprise apps, Spring is a very good candidate.
The load time of Spring apps is dominated by the number of classes loaded from disk, which is a function of the libraries pulled in. This is because the JVM loads classes out of JARs more or less linearly.
Think about it for a second: which is faster, in-memory operations (reflection) or I/O (loading classes from disk)?
Dave Syer has done more actual empirical investigation[0] of Spring's launchtime behaviour than anyone. If you can produce better evidence of actual behaviour, I'll be very surprised.
[0] https://github.com/dsyer/spring-boot-startup-bench
Disclosure: I work for Pivotal, we sponsor Spring development. I do not work on Spring.
I guess the biggest issue is restarting services in production, but that is mostly alleviated by not having singular copies of crucial services.
It all depends on what your init logic is I guess.
All of Joist's Rails-ish code generation (creating the boilerplate lazy-loaded getters/setters/collections/etc.) is done at build-time so your test-/server boot time is very quick.
[1]: http://www.joist.ws/