- Series: Recipes
- Paperback: 700 pages
- Publisher: Apress; 1 edition (February 18, 2009)
- Language: English
- ISBN-10: 1590599799
- ISBN-13: 978-1590599792
- Product Dimensions: 7.5 x 1.7 x 9.2 inches
- Shipping Weight: 2.8 pounds
- Average Customer Review: 68 customer reviews
- Amazon Best Sellers Rank: #2,303,007 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Spring Recipes: A Problem-Solution Approach 1st Edition
Use the Amazon App to scan ISBNs and compare prices.
Fulfillment by Amazon (FBA) is a service we offer sellers that lets them store their products in Amazon's fulfillment centers, and we directly pack, ship, and provide customer service for these products. Something we hope you'll especially enjoy: FBA items qualify for FREE Shipping and Amazon Prime.
If you're a seller, Fulfillment by Amazon can help you increase your sales. We invite you to learn more about Fulfillment by Amazon .
The Amazon Book Review
Author interviews, book reviews, editors picks, and more. Read it now
Customers who viewed this item also viewed
Customers who bought this item also bought
About the Author
Gary Mak, founder and chief consultant of Meta-Archit Software Technology Limited, has been a technical architect and application developer on the enterprise Java platform for more than seven years. He is the author of the Apress books Spring Recipes: A Problem-Solution Approach and Pro SpringSource dm Server. In his career, Gary has developed a number of Java-based software projects, most of which are application frameworks, system infrastructures, and software tools. He enjoys designing and implementing the complex parts of software projects. Gary has a master's degree in computer science. His research interests include object-oriented technology, aspect-oriented technology, design patterns, software reuse, and domain-driven development.
Gary specializes in building enterprise applications on technologies including Spring, Hibernate, JPA, JSF, Portlet, AJAX, and OSGi. He has been using the Spring Framework in his projects since Spring version 1.0. Gary has been an instructor of courses on enterprise Java, Spring, Hibernate, Web Services, and agile development. He has written a series of Spring and Hibernate tutorials as course materials, parts of which are open to the public, and they're gaining popularity in the Java community. In his spare time, he enjoys playing tennis and watching tennis competitions.
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
As the first of its kind, this book attempts to introduce just about every facet of Spring. From the core bean dependency injection to UI development with Spring MVC to database simplification with JDBC to batch processing with Spring Batch to system integration with Spring Integration to the simplification of REST via Spring MVC as well as RestTemplate. This is a book for beginners and advanced Spring developers wishing to advance and discover more about Spring and the universe that SpringSource has created.
Spring Recipes is a powerful book initially written by Gary Mak who did a great job on authoring the first edition. Each chapter was logically followed by the next related chapter in a flawless manner. Very little content was rushed.
In the second edition, perhaps as suggested by the editor (Apress), the book was written as a fusion of first edition with the addition of chapters from another book, Spring Enterprise Recipes: A Problem-Solution Approach as well as the addition of new technologies such as Spring Roo. As a consequence the book put on a lot of weight. From a middle weight book it became a heavy weight book. There are over one thousand pages. A the same time this growth in the number of pages illustrates how Spring has matured beyond the core J2EE and has moved into more complex sectors such as Spring Integration, Spring Batch, Spring Roo and so on. It also shows how a framework like Spring which at first was intended to simplify J2EE has in fact revolutionized Java itself. From core Java to Enterprise Java this book exemplifies how Spring is an essential part of just about every facet of Java based systems.
Josh Long, who led the effort in the second edition, has gone far and beyond to make this book more useful in the Spring 3 context. He reviewed most sections from the previous editions and although some unedited sections remain, the concept of Spring 3 is ever present. But with such mammoth effort and the tight deadline this book faced, there are some rather small lapses. From time to time in this review I will attempt to highlight those. For example, small tidbits such as the ApplicationContextAware example were left in the pre-Generics state as written in the previous edition; again, the flow of the book is actually refreshed to exemplify Spring 3 and those small omissions should not dissuade the reader from learning Spring 3.
The second edition loses the introduction to Inversion of Control (IoC) in favor of more hands on examples. Logically this was done in to save the book from competing for size with the Oxford Dictionary. Another major change in this edition is the book sectioning. The previous edition was separated in distinct sections such as core, advanced, etc; those were conducive of Spring 2.x. With the introduction of new concepts such as Spring Batch and Spring Integration, the data access related topics were moved out of the core section and into a chapter nearer to advanced data-centric topics.
As this is a massive book, inevitably some topics received more attention than others. This is caused by the fact that the book attempts be the Spring Encyclopedia. Such feat has not been attempted before in a Spring related book. The pluses of this approach are that the reader if made aware of all that is Spring and the massive effort that went into what is now the Spring Framework. Most readers benefit from this format as the book attempts to cover each topic in one form or another. Having a short introduction on topics such as Spring Roo would lead more developers to explore this Spring project and I think that Spring Roo is one of the most important projects ever introduced in any Java framework. It is so because it simply allows the developer to explore the features and principles of Spring Framework hands one and in a relatively short time; and yes, there are principles in Spring; the most important is the "don't repeat yourself" (DRY principle) and Spring Roo exemplifies that principle.
The book uses Maven and all the examples are maven driven, but unlike the previous edition the examples are not arranged by chapters. This is a slight disadvantage since it makes it harder to find the examples unless they are open via an IDE or simply searched through some find feature. Having the examples arranged by chapters was a major plus but the authors have decided otherwise; perhaps this was done in order to save time. There are plenty of examples and the ones I've compiled and used worked as designed which shows that the quality of the code was properly reviewed.
Core Spring receives a good coverage; from the beginning the author starts with the Maven suggestions and how the latest Spring jars can be obtained. It would have helped to suggest the Spring STS edition of Eclipse which is a perfect and free IDE which includes the m2eclipse plug-in for Maven project integration simplification. The Spring concept is introduced with the now classic Spring applicationContext.xml concept. It highlights faster ways to configure beans via XML; from bean initialization shortcuts to configuring collections such as lists, sets, arrays, maps, and properties. Auto wiring is introduced just before annotations are gently introduced as a means to simplify bean configuration. The advanced section introduces factory method invocations as well as other advanced ways to configure Spring beans. Spring Expression Language (SpEL) is also introduced with meaningful examples. This is followed by bean scopes and bean lifecycle aware beans. As Spring 3 introduced Java Config based bean configuration. One note on this; Java Configuration does not offer all the functionality found in the Spring XML or Spring bean annotations; so do not blame the book for lacking some bean creation examples shown in the `core Spring bean configuration' sections. (tip: wait for Spring 3.1; that will enhance support for Java Configuration).
Spring AOP is now focused on the AspectJ style and the XML style; the `Dynamic Proxy and Classic Spring AOP' chapter has been removed since the first edition of this book should be used if such approach is sought. AOP is a fairly straight forward concept and the book does a good service on introducing the annotation-based and XML-based AOP.
Spring Security focuses on the most popular security approaches; from URL security, to HTTP basic as well as form based security. Authenticating users as well as encrypting data is also exemplified. LDAP Server authentication is a very complete example which shows how to install, configure and integrate with in other to authenticate against LDAP. This is a very complete chapter which shows how to use Spring Security and how to integrate with UI components to exemplify a real time example.
The chapter on with other frameworks is short but complete; integrations such as JSF, Servlets, Filters, Struts 1.x and DWR are exemplified
Spring Web Flow and Spring MVC take center stage. The Spring MVC section introduces REST integration which is a great addition to the already superior web UI framework. By the end of those two chapters the reader should be able to showcase Spring Web Flow as well as Spring MVC with the cool addition of RESTful services.
I've skipped the Flex chapter. So I cannot detail this section.
The chapter on Grails is a great one because it introduces the reader to project simplification through this great dynamic language based on Groovy. Great detail is paid to this chapter and by the end of it the reader should begin to test and harness Spring in a much faster manner. As a personal tip, download the latest edition of Spring STS to simplify the adoption of this great concept known as Grails.
Topics such as Spring Roo and Spring REST receive a thin but good introduction' but then again; they do not deserve more since they are meant to simplify concepts such as project creation and REST client implementations. Do not expect to fully understand these topics by the end of their respective chapters. For example, Spring Roo is kept to a demo form which leads you start Spring Roo and go through a very short sequential introduction to the point where you are left at a starting point, which means, you must perhaps find another book or refer to the Spring Roo online reference to advance further. The online documentation offered by Spring as well as Spring STS are also great resources for exploring this new and cool project.
Spring Batch is introduced as a mere simple concept and no in-depth recipes are shown. The online documentation is a far better venue for this topic. It would have been nice to fuse with the Quartz Scheduler section to exemplify integrated Spring Batch with the Quartz Scheduler.
Quartz scheduling is anemic and virtually unchanged from the previous edition. The Quartz Scheduling framework is very complex and the Spring simplifications are not properly introduced using logical examples. This is perhaps one of the first and most obvious weaknesses in the book which was perhaps acceptable in the first edition but it's detrimental in the second edition. I personally consider Quartz a major scheduling framework and now that Terracotta owns it will receive more enhancements such as grid functionality.
The OSGI section is short. Spring DM is short and outdated. If focuses on Spring DM 1.2.x and the examples are anemic. They merely demonstrate how to power on Spring DM but do not delve deeply into the Spring DM dynamics and completely ignore Spring DM events. Spring DM is a favorite project of mine and I feel it should have received more attention.
For those still in love with EJB, there is a section for you. I will not discuss much about this chapter because there is not much to say. The concept is properly covered and that's it.
In the second edition, the Messaging section has been separated from the EJB joint chapter. This gave the current author more room to explain the reasoning behind Message driven programming and it allowed for more examples with the updated ActiveMQ framework.
The following chapters are the strength of this book.
- Introduction to Spring
- Advanced Spring IoC Container
- Spring AOP and AspectJ Support
- Scripting in Spring
- Spring Security
- Spring Web Flow
- Spring MVC
- Spring REST
- Spring Testing
- Data Access
- Spring in the Enterprise
- Spring Integration
- Spring on the Grid
Overall, I would recommend this book because it serves as a complete reference on what Spring can offer. Some topics will require the reader to seek more documentation; namely, Spring Roo, Spring Batch and Spring Integration. This is natural since those are technologies which require far more documentation, but this book does introduce these topics very well.
In closing, I would recommend reading the electronic version since the paper based book is impossibly thick. The PDF edition of the book is properly indexed and it's a plus if you wish to copy/paste code from it which is natural at times given that this edition did not arrange the examples by chapters.
It also suffers from the standard spring issues of today. You ask a question and the answer is "here are 400 ways you could do it...go figure one out". It's a shame because we all know the framework is really flexible how about some standard best practices and most intelligent design choices.
I have read the Spring In Action book, and it was decent. It is, in my opinion, incomplete and full of silly analogies. However this book is quite different.
It is marvelous, whether you're using it for a reference, learning from scratch, or if you have some knowledge of Spring but want to learn more. It is extremely well written. The code examples I've seen have all been correct. They are simple enough to understand at first glance, but are complex enough to show you multiple ways to solve a problem.
The text for each chapter starts simple, but if you keep reading it begins to solve the problems you would have encountered if you had started to code right then; the text flows very well.
This book is very concise and gets straight to the point, but doesn't leave out any important details. It isn't full of analogies or explanations that are generally meant for people who don't know programming. You should probably be familiar with the basics of Java for most of the book, and Java Servlets if you're reading the Spring MVC section.
This book is not only for developers who at least know the basics of Java, but is great even for seasoned developers who want to learn about everything Spring has to offer. It covers pretty much everything there is to know.
This is truly a book I'm glad and proud to have on my bookshelf.
By far this is the best book about Spring you will every read.
VERY easy to read. It is well structured as questions and answers, I am really amazed how detailed it is.
Of course the author(s) did not cover 100% of the Sprint Framework, but by far they have covered it better than anybody else.
For example, AOP, JDBC Templates, Hibernate Templates, JMS Templates, Quartz, Spring WebFlow, Testing, configuring web applications with JPA and Hibernate, Transactions, ...etc have been covered way beyond the basics. So this book along with its code which you can download should get you up and running very quickly.
One thing I wish if it was covered: RUN AS Manager in Spring's Security, and by far that presentation about Security is much more complete than any I have read before.
I give it 5 starts, good job. In the future, I wish the next version will elaborate furthur on Spring Security, and more complex examples on one to many relationships with JBA and Hibernate.