16

Click here to load reader

Spring ActionScript

Embed Size (px)

DESCRIPTION

Spring ActionScript presentation files from FlexCamp 2008 in Antwerp (Belgium)

Citation preview

Page 1: Spring ActionScript

Christophe Herremanwww.herrodius.com

<Flex:Camp/> Belgium11 December 2008

Prana goes SpringIntroducing Spring ActionScript

Page 2: 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

Page 3: Spring ActionScript

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

Page 4: Spring ActionScript

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

Page 5: Spring ActionScript

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

Page 6: Spring ActionScript

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

Page 7: Spring ActionScript

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

Page 8: Spring ActionScript

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

Page 9: Spring ActionScript

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

Page 10: Spring ActionScript

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

Page 11: Spring ActionScript

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

Page 12: Spring ActionScript

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

Page 13: Spring ActionScript

Application Contexts- XMLApplicationContext

AS3 compatible

- FlexXMLApplicationContextFlex specific: adds support for ArrayCollection, …

April 13, 2023 13Spring ActionScript | <flex:camp/> Belgium

Page 14: Spring ActionScript

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

Page 15: Spring ActionScript

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

Page 16: Spring ActionScript

Questions?