![Page 1: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/1.jpg)
![Page 2: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/2.jpg)
Welcome
![Page 4: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/4.jpg)
Why the Spring Framework
Design Techniques and Coding Standards for J2EE Projects
http://www.theserverside.com/articles/content/RodJohnsonInterview/JohnsonChapter4.pdf
Introducing the SpringFramework http://www.theserverside.com/resources/article.js
p?l=SpringFramework
![Page 5: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/5.jpg)
What is the Spring Framework?
A open source project whose main goals are to:
1) Make J2EE easier to use by providing a layered architecture that is internally consistent
2) Promote good programming practices.
![Page 6: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/6.jpg)
How does it achieve it's goal?
By providing a set of modules that can be used in concert or individually
![Page 7: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/7.jpg)
Spring Overview
![Page 8: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/8.jpg)
Full-Fledged Spring Web Application Usage
![Page 9: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/9.jpg)
Middle Tier
![Page 10: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/10.jpg)
Transparent Remote Access
![Page 11: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/11.jpg)
EJB Abstraction Layer
![Page 12: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/12.jpg)
Spring Core
Designed for working with JavaBeans Via BeanFactory
![Page 13: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/13.jpg)
Bean Factory
Light weight container Loads Bean Definitions Enables object to be retrieved by name Instantiates one or more instance of a bean Manages relationships between objects
![Page 14: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/14.jpg)
Bean Definition
Defines the bean class The bean identifiers To singleton or not Properties and collaborators Constructor arguments Initialization method Destruction method
![Page 15: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/15.jpg)
Inversion of Control/Dependency Injection
Beans do not do a lookup to resolve depen-dencies
The container injects the dependency Two major variants
Setter-based dependency injection Constructor-based dependency injection
![Page 16: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/16.jpg)
Setter-based dependency injection
Container calls setters on the bean after invoking an argumentless constructor
Beans based on setter-based dependency are true JavaBeans
Use of setter-based dependency is advocated by Spring
![Page 17: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/17.jpg)
Example of Setter Based Injection
<bean id=”exampleBean” class=”examples.ExampleBean”><property name=”beanOne”><ref bean=”anotherBean”/></property><propetry name=”beanTwo”><ref bean=”someBean” /></propery><property name="integerProperty">1</property>
</bean>
<bean id=”anotherBean” class=”examples.AnotherBean” /><bean id=”someBean” class=”examples.someBean” />
public class ExampleBean {private AnotherBean beanOne;private someBean beanTwo;private int i;
public void setBeanOne(AnotherBean beanOne) { this.beanOne = beanOne; }
public void setBeanTwo(SomeBean beanTwo ) { this.beanTwo = beanTwo; }
public void setIntegerProperty(int i ) { this.i = i; }}
![Page 18: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/18.jpg)
Constructor-based Dependency Injection
Realized by invoking a constructor with a number of arguments
May be prefered as means of insuring that beans can not be constructed in an invalid state
![Page 19: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/19.jpg)
Example of Constructor Based Injection
<bean id=”exampleBean” class=”examples.ExampleBean”><constructor-arg><ref bean=”anotherBean”/></constructor-arg><constructor-arg><ref bean=”someBean”/></constructor-arg><constructor-arg>1</constructor-arg>
</bean>
<bean id=”anotherBean” class=”examples.AnotherBean” /><bean id=”someBean” class =”examples.SomeBean”/>
Public class ExampleBean {private AnotherBean beanOne;private SomeBean beanTwo;private int i;
public ExampleBean ( AnotherBean anotherBean, SomeBean someBean, int i ) {this.beanOne = anotherBean;this.beanTwo = someBean;this.i = i;
}}
![Page 20: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/20.jpg)
Advantages of Dependency Injection
Components are simpler to write Components are easier to test Objects do not depend on the container API Objects can run outside the container
![Page 21: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/21.jpg)
Example of BeanFactory Usage
InputStream inputStream = new FileInputStream(“beans.xml”);BeanFactory factory = new XMLBeanFactory(inputStream);
// Check if a bean definition exists by the name exampleBeanif ( factory.containsBean(“exampleBean”) {
// exampleBean definition exists}
// Can throw NoSuchBeanDefinitionExampleBean eb = (ExampleBean) factory.getBean(“exampleBean”);
// Can throw BeanNotOfRequiredTypeExceptionExampleBean eb =
(ExampleBean) factory.getBean(“exampleBean”, ExampleBean.class );
// Can throw NoSuchBeanDefinitionif ( factory.isSingleton(“exampleBean” ) {
// this bean is a singleton}
String[] aliasas = factory.getAliases(“exampleBean”);
![Page 22: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/22.jpg)
Property Editors
Convenient to represent a property in a hu-man readable form and convert it back to object
Property Editors must implement ja-va.beans.PropertyEditor
![Page 23: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/23.jpg)
Built-in Property Editors
Standard Java Property Editors Bool, Byte, Color, Double, Float, Font, Int, Long,
Short, String Standard Spring
Class, File, Local, Properties, StringArray, URL Custom Spring
CustomBoolean, CustomDate, CustomNumber, StringTrimmer
![Page 24: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/24.jpg)
Application Context
BeanFactory functionality in a more frame-work-style
can be created declaratively using for ex-ample a ContextLoader
![Page 25: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/25.jpg)
Added functionality of the Applica-tionContext
MessageSource, providing access to mes-sages in, i18n-style
Access to resources, like URLs and files Event propagation to beans implementing
the ApplicationListener interface Loading of multiple contexts, allowing some
of them to be focused and used for example only by the web-layer of an application
![Page 26: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/26.jpg)
Using the MessageSource
ApplicationContext interface extends an in-terface called MessageSource
When an ApplicationContext gets loaded, it automatically searches for a Message-Source bean defined in the context named messageSource
If it can't find any source for messages, an empty StaticMessageSource will be instan-tiated
![Page 27: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/27.jpg)
Message Source Interface
String getMessage (String code, Object[] args, String default, Locale loc)
String getMessage (String code, Object[] args, Locale loc)
String getMessage(MessageSourceResolv-able resolvable, Locale locale)
![Page 28: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/28.jpg)
Message Source Implementations
ResourceBundleMessageSource ReloadableBundleMessageSource StaticMessageSource All implement HierachicalMessageSource
![Page 29: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/29.jpg)
ResourceBundleMessageSource Example
<beans> <bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames"> <list> <value>format</value> <value>exceptions</value> <value>windows</value> </list> </property> </bean></beans>
![Page 30: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/30.jpg)
Propagating Events
Provided via the ApplicationEvent class and ApplicationListener interface
Standard Observer Pattern
![Page 31: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/31.jpg)
Built-in Events
ContextRefreshedEvent ContextClosedEvent RequestHandledEvent
![Page 32: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/32.jpg)
ContextRefreshedEvent
Event published when the ApplicationCon-text is initialized or refreshed. Initialized here means that all beans are loaded, sin-gletons are pre-instantiated and the Applica-tionContext is ready for use
![Page 33: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/33.jpg)
ContextClosedEvent
Event published when the ApplicationCon-text is closed, using the close() method on the ApplicationContext. Closed here means that singletons are destroyed
![Page 34: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/34.jpg)
RequestHandledEvent
A web-specific event telling all beans that a HTTP request has been serviced (i.e. this will be published after the request has been finished). Note that this event is only appli-cable for web applications using Spring's DispatcherServlet
![Page 35: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/35.jpg)
Custom Events
All you need to do is call the publishEvent() method on the ApplicationContext
![Page 36: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/36.jpg)
Custom Event ExampleApplication Context
<bean id="emailer" class="example.EmailBean"> <property name="blackList"> <list> <value>[email protected]</value> <value>[email protected]</value> <value>[email protected]</value> </list> </property></bean>
<bean id="blackListListener" class="example.BlackListNotifier"> <property name="notificationAddress"> <value>[email protected]</value> </property></bean>
![Page 37: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/37.jpg)
Custom Event ExampleActual Beans
public class EmailBean implements ApplicationContextAware {private List blackList;
public void setBlackList(List blackList) { this.blackList = blackList; }
public void setApplicationContext(ApplicationContext ctx) {this.ctx = ctx;}
public void sendEmail(String address, String text) {
if (blackList.contains(address)) {BlackListEvent evt = new BlackListEvent(address, text);ctx.publishEvent(evt);return;
}}
}
public class BlackListNotifier implement ApplicationListener {private String notificationAddress;
public void setNotificationAddress(String notificationAddress) {
this.notificationAddress = notificationAddress;}public void onApplicationEvent(ApplicationEvent evt) {
if (evt instanceof BlackListEvent) {// notify appropriate person }}
}
![Page 38: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/38.jpg)
Using Resources Within Spring
ApplicationContext implements Re-sourceLoader interface
Resource getResource( String location) Fully qualified URLs, “file:C:/test.data” Relative File Paths, “WEB-INF/test.data” Classpath psuedo URL “classpath:test.data”
![Page 39: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/39.jpg)
Resource Interface exists() - Checks if the resource exists, re-
turning false if it doesn't getInputStream() - Opens an InputStream
on the resource and returns it IsOpen() - Return whether this resource
represents a handle with an open stream. If true, the InputStream cannot be read multi-ple times, and must be read and closed to avoid resource leaks.
GetDescription() - Returns a description of the resource, often the fully qualified file name or the actual URL
GetFile() - Return a File handle for this re-source
![Page 40: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/40.jpg)
Extra marker interface
public interface ApplicationContextAware void setApplicationContext(ApplicationContext
context)
![Page 41: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/41.jpg)
Creating an ApplicationContext from a web application
Can be created declaratively using for ex-ample a ContextLoader
Can also be created programmatically
![Page 42: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/42.jpg)
ContextLoader Implementations
ContextLoaderListener Servlet 2.4 and possible 2.3 compatible
ContextLoaderServlet Servlet 2.2 Compatible
![Page 43: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/43.jpg)
ContextLoaderListener Example
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/daoContext.xml /WEB-
INF/applicationContext.xml</param-value></context-param>
<listener> <listener-
class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
![Page 44: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/44.jpg)
ContextLoaderServlet Example
<servlet><servlet-name>context</servlet-name><servlet-
class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup></servlet>
![Page 45: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/45.jpg)
Spring AOP
AOP decomposes programs into aspects
![Page 46: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/46.jpg)
AOP Concepts
Aspect Joinpoint Advice PointCut Introduction Target Object AOP proxy Weaving
![Page 47: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/47.jpg)
Aspect
The modularization a concern that might otherwise cut across multiple objects.
Transaction management is a good exam-ple
Spring implements Aspects as Advisors and Interceptors
![Page 48: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/48.jpg)
JoinPoint
A point during the execution a the program, such a when a method is invoked or an ex-ception is thrown
![Page 49: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/49.jpg)
Advice
The action that is to be taken at a particular jointpoint.
Types of advise include Around Before Throws After Returning
Sprint maints a chain of 'interceptors' around the joinpoint
![Page 50: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/50.jpg)
Pointcut
A set of joinpoints specifying when an ad-vice should execute
![Page 51: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/51.jpg)
Introduction
Adding methods of fields to an advised class
Spring allows you to introduce new inter-faces to advised objects
![Page 52: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/52.jpg)
Target
Object containing the joinpoint Also referred to as the advised or proxied
object
![Page 53: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/53.jpg)
AOP Proxy
The object created by the AOP framework that includes the advise.
Spring will create a proxy using a JDK dy-namic proxy or a CGLIB proxy.
![Page 54: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/54.jpg)
Weaving
Assembling the aspects to create an ad-vised object.
Can be done at compile time like AspectJ. Spring performs weaving at runtime
![Page 55: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/55.jpg)
Spring AOP Capabilities
Implemented in pure Java Suitable for use in J2EE container since
does not need to control the class loader hi-erachy
Spring supports interception of methods Does not support field interception Provides classes to represent pointcuts and
different advise types Spring advises object at instance, rather
than class loader level
![Page 56: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/56.jpg)
Spring DAO
Aimed at making it easy to work with data access technologies like JDBC, Hibernate or JDO
Allows you to switch between them fairly easily
![Page 57: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/57.jpg)
Consistent Exception Hierarchy
Provides an API that moves tedious error handling out of the application into the framework
Wraps exceptions converting them from proprietary checked exceptions to abstract-ed runtime exceptions
Examines metadata to ascertain the database uses this knowledge to map ex-ception to correct exception in hierarchy
![Page 58: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/58.jpg)
Consistent Abstract Classes for DAO Support
JdbcDaoSupport Requires a datasource to be set
HibernateDaoSupport Requires a SessionFactory to be set
JdoSDaoSupport Requires a PersistenceManager to be set
![Page 59: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/59.jpg)
Spring Web MVC
Powerful and highly configurable Designed around a DispatcherServlet Unlike Struts which forces your Action and
Form object into concrete inheritance, Spring MVC is entirely based on interfaces
View agnostic, you don't get pushed into JSP
SpringControllers are configured via De-pendency Injection
![Page 60: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/60.jpg)
Features of Spring Web MVC
Clear separation of roles: controller vs val-idator vs command object vs form object vs model object
Straightforward configuration of both fram-work and application classes as JavaBeans
Non-intrusive, use whatever Controller you need ( plain, command, form, wizard, multi-action or custom) instead of Action/ActionForm for everything
![Page 61: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/61.jpg)
Features of Spring Web MVC
Resuable business code, no need for dupli-cation. Use existing business objects as commands or form objects instead of mirror-ing them in special ActionForm classes.
Handler and view mapping strategies from simple to sophisticated instead of one way
Related Projects Rich Client Platform
Sprint RCP Validation
Commons-validator Attribute based
Security Acegi Security System for Spring
http://acegisecurity.sourceforge.com Spring IDE for Eclipse
http://www.springframework.org/spring-ide/eclipse
![Page 62: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/62.jpg)
Resources
The Spring web site http://www.springframework.org
Introducing the Spring Framework http://www.theserverside.com/articles/article.tss?l
=SpringFramework Expert one-on-one J2EE Design and Devel-
opment By Rod Johnson Chapter 4 for available at
http://www.theserverside.com/articles/content/RodJohnsonInterview/JohnsonChapter4.pdf
![Page 63: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/63.jpg)
Resources
Expert One-on-one J2EE Development without EJB
By Rod Johnson and Jürgen Höller Developing a Spring Framework MVC appli-
cation step-by-step http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step.html
Introduction to the Spring Framework By Eduardo Isso Ito
http://www.springframework.org/downloads/EduardoIssao/Spring.pdf
![Page 64: Overview of the Spring Framework - Austin Java Users Groupaustinjug.org/eDocuments/springintro.pdf · What is the Spring Framework? A open source project whose main goals are to:](https://reader031.vdocuments.site/reader031/viewer/2022030419/5aa694d97f8b9ae7438eeaf6/html5/thumbnails/64.jpg)