Spring survey
-
Upload
chris-roeder -
Category
Technology
-
view
435 -
download
2
Transcript of Spring survey
- 1. An Survey of Spring Chris Roeder March, 2011 This talk summarizes a lot of what is available in: Spring In Action , Craig Walls, Manning 2008
2. Spring is a collection of frameworks:
- IoC an Inversion of Control
- AKA: Dependency Injection Framework
Data Access,Transaction Management, Security 3. Remote Access Framework 4. Spring Dynamic Modules 5. Aspects a way to deal with cross cutting concerns 6. MVC an alternative to web application frameworks like Struts 7. Spring does not re-invent the wheel
- Uses existing logging frameworks
8. Uses existinganything:ORM, transactions, Aspects, Remoting, etc. 9. Spring is there to provide portability betweenframeworks that share a purpose and interface 10. Spring Frameworks are Abstractions
- Frameworks are collections of Java interfaces
11. Implemented by a variety of solutions:
- Hibernate, JPA, Toplink
Injected into your code by the config file using the Java Bean Interface (more) 12. Leaving your code simple and full of POJOs (more later) 13. When needs require a different implementation, very easy to change the config file with no code changes 14. Detail: Java Bean
- A JavaBean is a Java Object that is serializable, has a nullary constructor, and allows access to properties using getter and setter methods.
- http://en.wikipedia.org/wiki/JavaBean
Not anEntityJava Bean or EJB 15. Detail: POJO
- The name is used to emphasize that a given object is an ordinary Java Object, not a special object, and in particular not an Enterprise JavaBean
- http://en.wikipedia.org/wiki/Plain_Old_Java_Object
Meaning it's not tied to a particular framework. 16. Inversion of Control or Dependency Injection?
- Inversion of Control is a general concept that relates to event-driven programming where the stream of events dictates execution.
17. Dependency Injection is a more specific concept that refers to setting values on objects (Java Beans) from an external source. 18. Spring calls the framework IoC. 19. I call the concept used here DI. 20. Detail: IoC
- Dependency Injection (DI)involves abstracting out the introduction of a project's components.
21. Even with good modularity, you still hard-code them together with code like this: 22. public static void main(String args[]) { DataProvider dp = new DataProvider(); CorpMetrics metrics = new CorpMetrics(); metrics.calculate(dp); 23. Detail: IoC 2
- In other situations, JDBC in EJB for example, collaborators aren't hard-coded, but find each other at runtime:
24. A JDBC setup finds its database connection by consulting JNDI, making environmental assumptions: Context initContext = new InitialContext(); Context envContext= (Context)initContext.lookup("java:/comp/env"); DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle"); Connection conn = ds.getConnection(); ( http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html ) 25. Changes still involve changing the java code. 26. Detail: IoC 3
- Separate classes allows flexibility
27. Hard-coded constructor calls limit it. 28. Unit Testing with different configurations is made easier. 29. IoC is used as a supporting technology throughout Spring 30. UIMA users, as described in a 2009 poster paper, would find this eerily familiar
- A bit of programmer humor would involve using uimaFIT and Spring to define a pipeline in a Spring config file instead of a CPE.
31. Detail: IoC 4
- Alternate implementations require interfaces:
32. Code to Interfaces 33. Create new implementations of Classes that implement them. 34. Easy to swap with a different implementation when both implement the same Java interface. 35. Also works to enable a kind of multiple inheritance in Java. 36. Survey: Data Access
- POJO model entities can be stored in any ORM tool, just plain JDBC or others
37. Operations on entities built in Data Access Objects (DAO)
- GetById(), GetListWhere(), Update(), etc.
Spring provides templates to make building DAOs easy 38. BTW, these are used in FLEX integration 39. Survey: Transaction Management
- Abstracts on top of JDBC, Hibernate, JPA, JMS, EJB transaction.jta.* classes
40. Databases handle their own transactions:
- START TRANSACTION, SAVE TRANSACTION
EJB containers allow transactions between multiple systems 41. Coding to Spring allows flexibility and growth 42. Survey: Remote Access
- Compares to RMI, SOAP WS, Hessian, Burlap
43. Abstracts the concept of remoting and provides different implementations. 44. Client and service objects are POJOs. 45. Can make use of JSR-181 Web Services Metadata annotations 46. Survey: Dynamic Modules
- Spring-DM is an implementation and integration of OSGI modules into Spring.
47. provide another layer of encapsulation over the concept of Class. Now you can have private and public classes as members of a module (jar). 48. allow for a lifecycle, so module can have a running state. 49. provide better naming, so versions can be included. 50. provide restricted class space, allowing for more than one version of a class at the same time. 51. More: Yuriy is working on this 52. Survey: Aspects
- Cross-Cutting Concern: functions that span multiple points of an application
53. Logging, Transactions, Security 54. Makes use of a proxy facility in Java reflection.
- Instead of creating and using a new object, you create the object and a proxy around it. Then use the proxy in it's place.
55. The proxy intercepts function calls and allows implementations of a Handler interface to intercept them. Other Implementations exist, but are intrusive. 56. Survey: MVC
- Spring has a Model, View, Control (MVC) framework for web applications. It separates code into three types:
- Model the data and functions to manipulate it
57. View the JSP pages to render a web page 58. Controller the plumbing or routing A kind of Model 2 architecture where a controller servlet controls creates beans and introduces them to JSPs
- Model 1 architecture is js JSP and Bean, leaving much to the JSP and scriptlets.
59. Links
- http://www.theserverside.com/news/1364527/Introduction-to-the-Spring-Framework