Has anyone tried using the Spring framework? What do you think? I've used a very cut down version of the code from the J2EE design & developmnet book & it seemed to work fine. I'm now considering using the full Spring framework in combination with Struts (with Don Brown's plugin). I have to say I'm more than a little wary of using something that is so immature. Also, there's a lot of it - is it over-engineered for all but the most complex systems? Any thoughts?
Initial thoughts? I guess it depends on what its intended use is...
- testing/developing/experimenting? -- Sounds like an OK choice...
- production apps? -- There are 12 developers - as compared to the huge infrastructure behind behind other products (J2EE RI/Tomcat/Struts/JRun/ etc...) -- It is still in Beta -- It has only been around for a little over a year -- Not universally accepted yet Just some thoughts... CH
Spring is built around the code you refer to that was published in Rod Johnson's book "expert one-on-one J2EE Design and Development". Much of that original code has been in production use for a few years. The current version is getting close to the 1.0 production release and is now being used in production by several of the developers and some others as well. I would recommend posting a question to the Spring mailing list about actual use in production. A couple of points are worth noting: 1. Support of users has been very good with people getting quick response to their questions, suggestions, comments, and requests for changes or bug fixes. 2. I have seen a lot of changes over the course of the last year including some major refactorings but even those have not caused any major pain to the users. 3. The documentation is still a work in progress but is improving at a high rate of change right now and the Javadocs are for the most part very good. 4. Spring is very non-intrusive and can be used in a modular way using only the parts of it that you actually need. 5. Spring plays well with other open source projects and API's and the developers actively cooperate with (and use) many others, i.e. Hibernate, JDO, iBatis, Glue, Velocity, Tiles and other Jakarta Commons projects, WebWork, Struts and Tiles, Tapestry, CGLIB and ASM, Burlap and Hessian, and more. BTW, you don't need any sort of plug-in to work with Struts as your web tier. 6. It's getting some significant contributions from people not on the developers list, including one person who is working on an Eclipse plug-in for managing it's configuration files (currently in alpha). If it sounds like I'm selling, I guess I am as I am one of the gang of 12 although my contributions have been very small. My own experience with Spring has been very posiitve. I am a long time Control Systems Engineer who first started getting serious about Java in NOV-2002, after having dabbled with it since 1996. I started by getting SCJP and SCWCD certified. I then joined up with Spring in APR-2003 and developed the initial version of the primary sample application, Petclinic. Petclinic shows off the basic features: component wiring, basic JDBC, and the web MVC framework. It was my first real web app and my first open source project. Another developer ( who gave me first rate support while I was doing my part) subsequently added support for Hibernate and transactions. Working with Spring taught me a lot and really helped me to do real well on my SCJD ( along with a lot of help from the ranchhands of course) . I am now getting atarted using Spring on some control systems UI related projects of my own and have complete confidence in the framework and how it is being supported. I hope you'll give it a closer look. [ January 14, 2004: Message edited by: Ken Krebs ]
kktec<br />SCJP, SCWCD, SCJD<br />"What we observe is not nature itself, but nature exposed to our method of questioning." - Werner Heisenberg
Originally posted by Ken Krebs: If it sounds like I'm selling, I guess I am as I am one of the gang of 12 although my contributions have been very small... I hope you'll give it a closer look.
Ken, I'm sure you're being too modest. I've been meaning to have a look at this for a while now but just haven't quite gotten to it yet. I've heard good things about it. I hope you like our place enough to hang out regularly. It's always great to have a luminary around.
Junilu, Modest ?? People who really know me wouldn't accuse me of that Luminary ?? certainly, not on Spring. Well, maybe a very minor one in the SCJD Forum as I scored well (389/400) and posted a detailed design discussion in that forum. I didn't post much before that (while doing SCJP & SCWCD) because I didn't know enough at the time to have much of anything useful to say. BTW, while my score was good, the thing I am most proud of (DANGER: head swelling like the Goodyear blimp) is the fact that I took the essay exam on OCT30 and my certificate is dated NOV1. "Any fool can write code that a computer can understand. Good programmers write code that humans can understand" - Martin Fowler Having said all that, I'm glad to be a homesteader here at the ranch. There are not many days anymore where I'm not lurking about here somewhere [ January 15, 2004: Message edited by: Ken Krebs ]
Originally posted by Carleton Harrison: - production apps? -- There are 12 developers - as compared to the huge infrastructure behind behind other products (J2EE RI/Tomcat/Struts/JRun/ etc...) -- It is still in Beta -- It has only been around for a little over a year -- Not universally accepted yet Just some thoughts... QUOTE] Most successful projects (Hibernate for eg) have a small number of core developers, as Rick pointed out. We have lots of people approaching us who want to be Spring developers, but I would rather keep the number of active developers small to ensure quality and focus. (There will likely to be a number of spin-off projects, however, such as the alpha Eclipse plugin project.) Having a clean, elegant concept is key to the resources you require. Take Hibernate and CMP. It takes an army to implement CMP and the results are...well my views on this are well known :-) Whereas Gavin implemented the core of Hibernate largely himself, and it's great. Spring 1.0 final will be released in February. RC1 is due out next week. Spring is used in production in numerous applications including banking applications. But when considering using Spring with Struts, it's important to remember that the alternative is usually to manage the middle tier via some home-grown mechanism: like ad hoc singletons, hand-rolled service locators etc. With Struts alone, the MVC layer is well-proven, but a whole lot of your stack is in-house because Struts doesn't aim to help you in the middle tier. With Struts+Spring you get a solid, well-tested middle tier solution that means you write a lot less code. And because Spring imposes minimal dependencies on your object model, you don't have to write a whole lot of Spring-specific code. Regards, Rod
Joined: Apr 04, 2002
Hey nice summary Rod! - but then youshould be able to make a persuasive statement for Spring. I'll keep checking the website this week for the RC1. I think folks here will feel rather more comfortable about all this once thats out. Thanks to all for your postings! Louise