what is spring really about ?
I have read a lot, but as my english is surely very poor i can not understand very well. I would like to use it, but i have not seen any good exemple but some web applications. what i need to know is how it can help me in developing an application?
I saw that it could be good when you do an application and you want to run it inside an app server, or standalone. it could be done with some minor changes. Is that true?
I would like to deploy some beans, and not to care on which app server it is running, can spring help me in that?
I have read this article http://www.theserverside.com/article...pringFramework
but can not still point out what is really for. is there any other links that explains in an english i can understand of course ;)
Thank you guys.
A beginners explanation (oh my!)
I am also a newcomer to Spring-land and my english is at least as poor as yours but, nevertheless, I will try to explain what Spring means to me. Of course other people may think differently.
Spring is a Java library to help developers create J2EE applications which are:
- Easy to develop.
- Easy to test.
In other words, it helps developers create J2EE applications which exhibit a good application architecture.
I define the term "application architecture" as the description of the different software artifacts that belong to an application from the point of view of their responsibilities, the roles they play and the communication/collaboration patterns existing among them. So in a good application architecture you don't mix responsibilities in the same component (say user interface and database access). I give the name tier to the set of application components with a similar or closely related role. Thus we have the "user interface tier", the "enterprise/business tier", etc.
Spring is different to many other frameworks in its strong focus in helping developers manage the "enterprise/business tier" and "resource-access tier" of the application (these receive almost as many names as developers exist in the world - whatever you call them please bear with me). Many other frameworks focus on the "web user interface tier". This is the case with Struts and WebWorks.
The way Spring helps structure these tiers is using the concept of a "factory" of objects. The application configures one or more factories, then it just retrieves objects from the factory as it needs them. The beauty of the factory is that, for the most part, objects created by the factory need not be aware neither of the factory nor of any other Spring-related classes.
Furthermore, they are not required to have dependencies on application server technologies such as EJB or JTA. All this is very important to improve the testability of the application as well as its future evolution. Another great contribution of Spring is that it allows the use of "enterprise" services (such as transactionality, pooling, etc) in a non-EJB execution environment. That way enterprise applications can be run on web servers (servlet containers) with lower prices and/or use fewer server resources than in an EJB environment.
Spring also provides a Model-View-Controller framework to structure the user interface tier of the application based on the same factory concept mentioned above.
Other parts of Spring may be used in a more traditional, "library" way (that is, your code imports some classes from the library and then use them). This is the case with the JDBC abstraction offered by Spring.
Maybe the best way to start using Spring is in the "business" and "resource-access" tiers of a simple JDBC based application.
Hope this has not confused you further :wink: !