Spring is an inferior framework to Nucleus. I have had a look at it and there is very little in there that Nucleus doesn’t do and lots that Nucleus does that Spring doesn’t. Nucleus does a much better job of component lifecycle management. Spring has only 2 scopes, Global and “do it yourself”. Spring has some nice hooks for persistence but Repositories are infinitely better, and Spring’s transactional hooks are similar to Nucleus’.
I have found a couple of features that Spring does better than Nucleus:
1. The ability to define the use of alternate, non-default constructors.
2. The ability to define factory classes to create beans
3. The ability to define methods to be called prior to destroying the component.
4. The ability to define initialization methods to be called after all properties have been set
Nucleus additionally has the layered configuration mechanism and XML file merging. Spring does not support this at all. The XML file system application context does support using multiple XML configuration files, but definitions in later files simply override settings in earlier files, there is no merging.
Nucleus also supports a hierarchical namespace that maps to the locations of configuration files on the disk. Spring has no notion that is close to this. Components are given an id that must be unique. This could quickly lead to name conflicts if applications are combined together, or if you are working on a large project. I can see that for small projects this wouldn’t be an issue.
Nucleus supports “global” configuration for settings using the Global.properties file that apply to all components. This is useful for turning on log levels uniformly, or configuring all components to use the same logListeners. As Nucleus has configuration merging this is easy to do, Spring provides no facility for this.
The Spring MVC framework is very similar to the MVC framework supported by Nucleus.
Overall, Spring seems good for small implementations, but as the application size grows and more components are added Spring will become unwieldy and hard to maintain. Nucleus is much more enterprise friendly.