Originally posted by Karthik Guru:
1. IOC, DI
2. MVC ( ok a servlet container is needed)
3. SpringAOP ( here am not referring to declarative security and transaction). But just AOP in general.
4...
5...
Please do add to this list.
When you download the Spring framework, you get the following (out of the box):
IoC/DI (provided by the Spring container)An AOP frameworkDeclarative transactions (yes, out of the box--built on top of the AOP framework).And you can declare transactions in either XML or as annotations (currently, Commons Attributes is the only option, but Spring 1.2 should support Java 5 annotations).MVC (as you noted, you still need Tomcat or some other servlet container)JDBC abstractionORM integration with Hibernate, iBatis, JDO, OJB, and others (Hibernate 3 coming in Spring 1.2)E-mail abstractionAbstraction for scheduling using Java's Timer class or QuartzJNDI abstractionJMS abstractionRMI abstraction -- expose your beans as remote services and wire in remote services as if they were any other POJOEJB abstraction -- wire in EJBs as if they were any other POJO and access Spring managed beans from EJBsJAX-RPC abstraction -- wire in web-services as if they were any other POJO and expose your POJOs as web-servicesHessian/Burlap abstraction -- wire in remote H/B services as if they were any other POJO and expose your POJOs as H/B servicesHttpInvoker abstraction -- wire in remote HttpInvoker services as if they were any other POJO and expose your POJOs as HttpInvoker services. (FYI, HttpInvoker is Spring's own remoting strategy.)JMX abstraction (coming in Spring 1.2) - Declaratively expose your beans as MBeans.Web flow framework (coming in Spring 1.2) - Declare a flow for a web application (built upon Spring MVC).Integration with JSF (via the DelegatingVariableResolver)Integration with StrutsIntegration with Tiles, JasperReports, Velocity and Freemarker (as views if you're using Spring MVC) Again, all of that is "out of the box". There's very likely something I've missed, but that's an impressive list of stuff.
Beyond "the box", you can easily add:
Declarative security, both web-based and at the bean-level (with Acegi)Integration with Tapestry (you have to write your own Tapestry engine implementation, but it's super-simple to do--I'm not sure why they don't include it with the Spring distribution).Integration with WebWork