Curious, what do they mean by 'micro'?
Curious, what do they mean by 'micro'?
http://docs.spring.io/spring-framework/docs/2.5.x/api/org/sp...
http://docs.spring.io/spring-framework/docs/2.0.8/api/org/sp...
Also related is the forced convention of requiring one directory nesting level per package name component, resulting in deeply-nested mostly-empty directories that have a tendency to easily exceed filesystem limits.
Here's another ridiculous class name found in different project (AspectJ):
http://aspectj.sourcearchive.com/documentation/1.6.5plus-pdf...
AbstractProxyFactoryBeanInstanceSingletonCommand is not, because it is too abstract. Typing the name is not so bad though.
Spring started life as a dependency injection framework, and that still constitutes the central part of it. Dependency injection is the mechanism by which components of an application are created and assembled, and so there was a natural expansion of Spring into providing those components. Spring now provides a web framework, plumbing for database persistence, batch processing, and all sorts of other things:
AIUI, Boost is a collection of libraries. Spring is much more frameworky than that. The general approach with Spring is to add a particular module to your project, sprinkle a few magic annotations on your code, then watch in wonder as lots of sophisticated stuff happens, exactly as Spring's designers foresaw. Usually.
There are two main alternatives to Spring. Firstly, Java EE, which is similar in spirit, smaller in extent, and the product of a decades-long standards process involving some of the world's most ponderous companies, but really not as bad as that might suggest:
http://www.oracle.com/technetwork/java/javaee/overview/index...
And in fact, i'd describe Spring as an alternative to Java EE, rather than vice versa.
Secondly, not using a framework at all, and just putting everything together yourself. To a large extent, Dropwizard etc are the result of people doing this, then posting the reusable bits of their application to GitHub.
Java's equivalent of Boost is probably some combination of Apache Commons:
And Google Guava:
https://code.google.com/p/guava-libraries/
The difference is that if you're using Spring, then you are writing a Spring application. Every part of your code will be pervaded by Spring, and you will have to do things in the way Spring prescribes. If you're using Commons or Guava, your application is your own, and those libraries will crop up here and there, where you choose to use them.
Here you go: http://docs.spring.io/spring/docs/4.1.6.RELEASE/javadoc-api/... http://docs.spring.io/spring/docs/4.1.6.RELEASE/javadoc-api/...
These are framework classes that you will never have to see or use when building a Spring application.
Spring is surely not perfect, most people don't have the slightest clue what a modern Spring Application (read into Spring Boot) looks like.
Customisation over configuration.
When using maven you can pick and choose the modules you want.
Edit: The ui generates the dependencies for your pom. I know how maven works, and it's a pain to copy all those xml snippets in your pom.
Composition over Inheritance.