Aspects – a way to deal with “cross cutting concerns”
MVC – an alternative to web application frameworks like Struts </li></ul>
Spring does not re-invent the wheel <ul><li>Uses existing logging frameworks
Uses existing anything: ORM, transactions, Aspects, Remoting, etc.
Spring is there to provide “portability” between frameworks that share a purpose and interface </li></ul>
Spring Frameworks are Abstractions <ul><li>Frameworks are collections of Java interfaces
Implemented by a variety of solutions: </li><ul><li>Hibernate, JPA, Toplink </li></ul><li>“Injected” into your code by the config file using the Java Bean Interface (more)
Leaving your code simple and full of POJOs (more later)
When needs require a different implementation, very easy to change the config file with no code changes </li></ul>
Detail: Java Bean <ul><li>“A JavaBean is a Java Object that is serializable, has a nullary constructor, and allows access to properties using getter and setter methods.” </li><ul><li>http://en.wikipedia.org/wiki/JavaBean </li></ul><li>Not an Entity Java Bean or EJB </li></ul>
Detail: POJO <ul><li>“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” </li><ul><li>http://en.wikipedia.org/wiki/Plain_Old_Java_Object </li></ul><li>Meaning it's not tied to a particular framework. </li></ul>
Inversion of Control or Dependency Injection? <ul><li>Inversion of Control is a general concept that relates to event-driven programming where the stream of events dictates execution.
Dependency Injection is a more specific concept that refers to setting values on objects (Java Beans) from an external source.
Unit Testing with different configurations is made easier.
IoC is used as a supporting technology throughout Spring
UIMA users, as described in a 2009 poster paper, would find this eerily familiar </li><ul><li>A bit of programmer humor would involve using uimaFIT and Spring to define a pipeline in a Spring config file instead of a CPE. </li></ul></ul>
Detail: IoC 4 <ul><li>Alternate implementations require interfaces:
Controller – the plumbing or routing </li></ul><li>A kind of “Model 2” architecture where a controller servlet controls creates beans and introduces them to JSPs </li><ul><li>Model 1 architecture is js JSP and Bean, leaving much to the JSP and scriptlets. </li></ul></ul>