Click here to load reader
Upload
christophe-herreman
View
10.518
Download
0
Embed Size (px)
DESCRIPTION
Spring ActionScript presentation files from FlexCamp 2008 in Antwerp (Belgium)
Citation preview
Christophe Herremanwww.herrodius.com
<Flex:Camp/> Belgium11 December 2008
Prana goes SpringIntroducing Spring ActionScript
What is Spring ActionScript ?
- An Inversion of Control (IoC) Container for ActionScript 3.0
- Based on Java Spring- Current release 0.6- Incubated as a Spring extension, working
towards a 1.0 release
April 13, 2023 2Spring ActionScript | <flex:camp/> Belgium
What is Spring ActionScript ?
- Cairngorm support- PureMVC support- Reflection API- Several Utilities (Assert, FlexUnitTestCase, …)- Domain base classes (Entity, ValueObject, …)- AOP, MVCS, …
April 13, 2023 3Spring ActionScript | <flex:camp/> Belgium
What is Inversion of Control ?
Inversion of Control, also known as IOC, is an object-oriented programming principle that can be used to reduce coupling inherent in computer programs.
April 13, 2023 4Spring ActionScript | <flex:camp/> Belgium
Types of Inversion of Control ?
- Dependency Lookup- Dependency Pull- Contextualized Dependency Lookup
- Dependency Injection- Constructor Injection- Setter Injection (see MXML)
April 13, 2023 5Spring ActionScript | <flex:camp/> Belgium
Constructor Injection
Class MyClass { public function MyClass(dependency:IDependency) { this.dependency = dependency; } public function doSomething():* { var somethingDone:* = dependency.getSomethingDone(); return markAsDone(somethingDone); }}
var instance:MyClass = new MyClass(new ConcreteDependency());instance.doSomething();
April 13, 2023 6Spring ActionScript | <flex:camp/> Belgium
Setter Injection
Class MyClass { private var dependency:IDependency; public function set dependency(value:IDependency):void { this.dependency = value; }
public function doSomething():* { var somethingDone:* = dependency.getSomethingDone(); return markAsDone(somethingDone); }}
var instance:MyClass = new MyClass();instance.dependency = new ConcreteDependency();instance.doSomething();
April 13, 2023 7Spring ActionScript | <flex:camp/> Belgium
Inversion of Control?
- Prefer setter injection- Type to interfaces !!!- Centralized configuration- Maintainability- Reusability- Testability- ...- Though counter-intuitive at first !
April 13, 2023 8Spring ActionScript | <flex:camp/> Belgium
What is an IoC Container ?
Creates and assembles components/objects and manages their lifecycle.
Spring ActionScript uses an XML dialect to define the “application context” (what objects are available and how they are related)
April 13, 2023 9Spring ActionScript | <flex:camp/> Belgium
The Application Context
// setter injection<objects> <object id=“instance” class=“MyClass”> <property name=“dependency” ref=“dependency”/> </object> <object id=“dependency” class=“ConcreteDependency”/></objects>
April 13, 2023 10Spring ActionScript | <flex:camp/> Belgium
The Application Context
// constructor injection<objects> <object id=“instance” class=“MyClass”> <constructor-arg ref=“dependency”/> </object> <object id=“dependency” class=“ConcreteDependency”/></objects>
April 13, 2023 11Spring ActionScript | <flex:camp/> Belgium
Working with the IoC container<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="onCreationComplete()“>
...
private function onCreationComplete():void { _applicationContext = new FlexXMLApplicationContext(“application-context.xml”); _applicationContext.addEventListener(Event.COMPLETE,
onApplicationContextComplete);
_applicationContext.load(); }
private function onApplicationContextComplete(event:Event):void { var instance:MyClass = _applicationContext.getObject(“instance”); }
...
</mx:Application>
April 13, 2023 12Spring ActionScript | <flex:camp/> Belgium
Application Contexts- XMLApplicationContext
AS3 compatible
- FlexXMLApplicationContextFlex specific: adds support for ArrayCollection, …
April 13, 2023 13Spring ActionScript | <flex:camp/> Belgium
IoC Container Conclusion
- Objects defined in external XML file- Loaded at runtime- Centralized dependency management- Managed by container- Deploy your application with different
configurations without recompiling!
April 13, 2023 14Spring ActionScript | <flex:camp/> Belgium
Resources- www.pranaframework.org- www.herrodius.com
- Objects Reference (the IoC container): http://static.springframework.org/spring/docs/2.5.x/reference/beans.html
- Forum: http://forum.springframework.org/forumdisplay.php?f=60- SVN: https://src.springframework.org/svn/se-springactionscript-as- FishEye: https://fisheye.springframework.org/browse/se-springactionscript-as- Jira: http://jira.springframework.org/browse/SESPRINGACTIONSCRIPTAS
- WTP: http://download.eclipse.org/webtools/updates/
April 13, 2023 15Spring ActionScript | <flex:camp/> Belgium
Questions?