* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Spring Framework
Survey
Document related concepts
Transcript
Wishing for Spring Presented by Robert Kaul The Spring Framework •Where did it come from? •Why use it? •What is it? •Who uses it? •How does it work? History of Spring It all started with some meteorologists… History of Spring First milestone release 1.0 in March 2004 by Rod Johnson J2EE developer 2.0 October 2006 2.5 November 2007 3.0 December 2009 Why use Spring? Designed for Consistency Maintainability Simplicity Jolt Productivity Award in 2006 For “Jolting” the industry JAX Innovation Award in 2006 Java Specific innovation J2EE without Spring Brought standardization to core middle-tier concepts. Transaction management (aka talking to a database) Over-complex Distributed applications hard to develop, debug, deploy and maintain. Take excess effort to develop Disappointing performance J2EE without Spring Excessive amounts of “Plumbing” code Code reviews showing large amounts of code that doesn’t do anything Try/catch blocks to acquire and release JDBC(Java database connection) resources Writing and maintaining plumbing code drains resources Attempts at design patters resulted in workarounds for application programing interfaces(APIs) I.E. (JDBC) Spring into Easier Consistency Helps Structure whole applications Takes care of “plumbing” code Dependency injection Aspect oriented programming Managing transactions Security Social networking Who would want to use Spring How does it? Wire beans Inject dependencies Declare beans AOP Database transactions Web applications Security Spring’s Container Inversion of control container Keeps track of all application resources Allows serialization of objects Using dependency injection Spring’s Container Wired beans interact with each other and are kept track of by the container Dependency injection Good dependency injection should leave code decoupled Easy to maintain Easy to test Should be able to inject with the injected knowing it. Declaring Beans Assume a ContactablePerson that implements a Person Public class ContactablePerson implements Person { private Phone phone; public ContactablePerson(Phone phone){ this.phone = phone;//phone is injected } public void AnswerPhone( throwDialException){ phone.answer(); } } Declaring Beans The Spring configuration files are written in XML Declaring Beans Why configuration files? For the sake of consistency Everything in spring has some form of configuration file. This is a simple fast way of easing a developer into something they will have to use on something much more complex. Aspect-Oriented Spring Point cut with advice before an action or after an action. Primarily for keeping track of data access; whens, wheres and how-manys To improve performance or get rid of something unused. Easy to update a current program using AOP Used for other things as well Spring uses this for it’s security features Aspect-Oriented Spring This is part of a MovieWatchers class AOP Spring Config Database access with Spring J2EE does it so does Spring Cuts down the need for “Plumbing” code Using the Templating design pattern. Allows for different types of databases. Achieves communication through eight different Templates Template classes JDBC’s Exceptions v. Spring’s Database access with Spring Why Template database access? Always going to have the same 7 steps throughout the interaction Establish a connection Start transaction Execute query Return data Commit/rollback the transaction Close connection Handle exceptions Developers only really want to execute the query. Database access with Spring Spring allows the developer to change their query while handling the other 6 steps This leads to Higher quality queries Higher productivity Database access with Spring Spring’s Model-view-controller The Spring way of allowing a user to view data on the web Has different view capabilities The Most common is a Java Server Page or JSP For all practical purposes is just smart HTML page linked to an data-access-object’s methods. For example home.jsp would be linked to HomeController.java Spring’s Model-view-controller Allows for web pages to have a Tile Layout Tile: piece of web page defined separately For example, sidebar.jsp Also allows for a type of inheritance sidebarCalendar.jsp Makes maintenance easier Moving pieces easier than rewriting a whole HTML page Mygreatlakes.org Different View Resolvers Here they are... InternalResourceViewResolver // used for the example ContentNegotiatingViewResolver BeanNameViewResolver FreeMarkerViewResolver JasperReportsViewResolver ResourceBundleViewResolver TilesViewResolver VelocityViewResolver XmlViewResolver XsltViewResolver Life cycle of a request Spring Model-view-Controller Generally Start with a home page a work out through the navigation Craig Wall’s Spring in Action 3.0 Spitters example Spitters is a twitter-like web application HomeController used to welcome users to Spitters by displaying recent spits. Spitters HomeController Spitters HomeController @Controller marker indicates that this is a controller class allows spring to register it as a bean and keep track of it @inject updates the context file automatically with the ref tag injecting the SpitterService upon creation @RequestMapping this marks the method to handle requests from “/” or from “/home” it also gets the Map of Strings to Object and stores it in a model map to be displayed later by the view The return “home” is the name of the view on which the map should be rendered Rendering Spring Views Rendering Spring Views <%@taglib prefix= these imports allow you to accomplish smart HTML things like iterate through a map ${variableName} is a variable reference from the homeController bean <s:url value= Spring’s way of creating context that is relative to a particular Spitter Also used for referencing static content like images This example doesn’t show everything input & file upload. Spring Security Features… Easy Configuration using Spring Dependency Injection Non-Intrusive Setup Don’t have to deploy libraries to your Server Non-Invasive Keeps security out of objects Pluggable Architecture Easy to replace, customize or extend parts Password encoding Caching LDAP Support Supports HTTP Digest authentication Never sends password over a wire Spring Security Any web application using personal identification data must have: Authentication Authorization Web request level and method level Accomplished using Dependency injection Aspects Conclusion Features… Dependency Injection Declaring beans Aspect-Oriented ability Point cuts Database access Templating and Templates Spring Model-view-controller Tile Layouts Rendering views Views Things I didn’t talk about… Web flow capabilities REST Transaction management Wiring a bean using spEL regular expression language… References Walls, Craig, Mr. Spring in Action. Illus. Marija Tudor. Ed. Sebastian Stirling. 3rd ed. Shelter Island: Manning, 2011. Print. "SpringSource." SpringSource. VMware, 2011. Web. 7 Nov. 2011. <http://www.Springsource.org/ features/modern-web> Jose, Benoy. "The Spring Framework." Rev. of Spring Framework. http://javaboutique. internet.com, 2011. Web. 13 Oct. 2011. <http://javaboutique.internet.com/tutorials/Spring_frame/>. Johnson, Rod. "Introduction to the Spring Framework." theserverside. TechTarget, 1 May 2005. Web. 2 Nov. 2011. <http://www.theserverside.com/news/1364527/ Introduction-to-the-Spring-Framework>. Javabeat, Niraimathi. "Extending ViewResolver and Chaining ViewResolvers in Spring MVC." javabeat. N.p., 2011. Web. 13 Nov. 2011. <http://www.javabeat.net/articles/ 247-extending-viewresolver-and-chaining-viewresolvers-in-sp-1.html>. Questions