62
Flex3勉強会第73回@北陸 2009-07-04 Flex’s DIContainer ASphalt2 containerc9katayama

FxUG in Toyama - ASphalt2 container -

Embed Size (px)

Citation preview

  • 1. Flexs DIContainerASphalt2 containerc9katayama Flex373 2009-07-04

2. ( ) IDc9katayama T2 Project http://t2framework.org/Flex373 2009-07-04 3. OSST2 Project (Java F/W)SDLoader ( Java Web Container)ASphalt2 Flex373 2009-07-04 4. Agenda ASphalt2 conatinerASphalt2 containerFlex373 2009-07-04 5. Agenda ASphalt2 containerFlex373 2009-07-04 6. ASphalt2 container ASphalt2 container ( ASphalt2(Flex2 UI Framework) DI ->CSS Flex373 2009-07-04 7. ASphalt2 container Apache2 License http://code.google.com/p/asphalt2/ v0_5_00 Flex373 2009-07-04 8. Flex373 2009-07-04 9. Flex373 2009-07-04 10. DI Flex373 2009-07-04 11. Flex373 2009-07-04 12. DI / CSS Flex373 2009-07-04 13. DIFlex373 2009-07-04 14. DI DI Flex373 2009-07-04 15. DI CSSAS3 [Inject][Init] Flex373 2009-07-04 16. /Flex373 2009-07-04 17. BeanFactory CSSBeanFactory DI var factory:BeanFactory = CSSBeanFactory.getInstance(); // var hoge:IHoge = factory.getBeanByType(IHoge); var foo:IFoo = factory.getBean(foo-foo); Flex373 2009-07-04 18. swcasphalt2container.swc Flex373 2009-07-04 19. Flex373 2009-07-04 20. prototypesingletonsingleton //prototype CSSBeanFactory.getInstance().defaultScope=CSSBeanFactory.SCOPE_PROTOTYPE//CSS CSSBeanFactory{ default-scope:prototype; } Flex373 2009-07-04 21. CSSFlex373 2009-07-04 22. CSS //CSS IHoge{ bean-type:ClassReference(hoge.impl.HogeImpl); value1:1000; value2:katayama; value3:toyama1,toyama2; }Flex373 2009-07-04 23. CSS public class HogeImpl implements IHoge{ public var value:int; public var value2:String;IHoge public car value3:Array; }//CSS IHoge{ bean-HogeImpl type:ClassReference(hoge.impl.HogeImpl);#value1:int value1:1000; #value2:String value2:katayama; #value3:Array value3:toyama1,toyama2; } Flex373 2009-07-04 24. CSS bean- type CSSBeanFactory#getBeanByType() //CSS IHoge{ bean-type:ClassReference(hoge.impl.HogeImpl); } // var hoge:IHoge = factory.getBeanByType(IHoge); var hoge:IHoge = factory.getBean(IHoge); Flex373 2009-07-04 25. CSS OK .hoge-hoge{ bean-type:ClassReference(hoge.impl.HogeImpl); }var hoge:IHoge = factory.getBean (hoge-hoge); .hoge-hoge.hoge-hoge hoge-hoge hogeHoge Flex373 2009-07-04 26. CSS beanDI${} .hogehoge{ bean-type:ClassReference(hoge.impl.HogeImpl); bar:12345; foo:${IFoo}; }IFoo{ bean-type:ClassReference(foo.impl.FooImpl); } Flex373 2009-07-04 27. CSS ${}DI .hogehoge{ bean-type:ClassReference(hoge.impl.HogeImpl); connect-url:${jdbc.url}; }jdbc{ url: jdbc://oresql/toyama:1919; }Flex373 2009-07-04 28. CSS bean-scope,init-method.hogehoge{ bean-type:ClassReference(hoge.impl.HogeImpl); bean-scope:singleton; init-method:init1; } Flex373 2009-07-04 29. CSSFlex373 2009-07-04 30. CSS XML swf XML CSSClassReference()SWF Flex373 2009-07-04demo 31. CSS XML CSSClassReference() Flex373 2009-07-04 32. CSS CSS Embed()SWFDI Flex373 2009-07-04 33. CSS CSS Flex373 2009-07-04 34. Flex373 2009-07-04 35. CSS Flex373 2009-07-04 36. bind().toType() to var factory:BeanFactory = CSSBeanFactory.getInstance();factory.bind(IHoge).toType(IHogeImpl); factory.bind(IFoo) .toType(IFooImpl).toPrototypeScope();var hoge:IHoge = factory.getBeanByType(IHoge); Flex373 2009-07-04 37. bind().toInstance() var factory:BeanFactory = CSSBeanFactory.getInstance();factory.bind(IHoge).toInstance(new IHogeImpl());var hoge:IHoge = factory.getBeanByType(IHoge); Flex373 2009-07-04 38. bindConstant()var factory:BeanFactory = CSSBeanFactory.getInstance();factory.bindConstant(yone.address,);yone.address Flex373 2009-07-04 39. swf MixIn BeanFactory Flex373 2009-07-04 40. Flex373 2009-07-04 41. bean Flex373 2009-07-04 42. [Inject]DI DI// IHoge [Inject] public var hoge:IHoge; Flex373 2009-07-04 43. namerequired name CSS,bind required trueFlex373 2009-07-04 44. [Inject(hoge)] public var hoge:IHoge;[Inject(name=hoge)] // public var hoge:IHoge;[Inject(name=yone.address,required=true)] public var hoge:IHoge;Flex373 2009-07-04 45. InitDI [Init] public function initialize():void{} Flex373 2009-07-04 46. Flex373 2009-07-04 47. CSSOK OK CSS DI Flex373 2009-07-04 48. Flex373 2009-07-04 49. Flex373 2009-07-04 50. public interface UserAuthService extends IEventDispatcher{function executeAuth(user:User):void; } Flex373 2009-07-04 51. public class DuyUserAuthService extends EventDispatcher implements UserAuthService {public function executeAuth(user:User):void{ dispatchEvent(new ResultEvent(OK)); } }Flex373 2009-07-04 52. public class ServerConnectAuthService extends EventDispatcherimplements UserAuthService{ public var url:String; public var connect:URLConnect; public function executeAuth(user:User):void{ connect.load(url,handleResult); } private function handleResult(e:ResultEvent):{dispatchEvent(e); } } Flex373 2009-07-04 53. UserAuthService{ bean-type: ClassReference(DuyUserAuthService); }UserAuthService{ bean-type:ClassReference(ServerConnectUserAuthService); url:http://www.livedoor.co.jp; }Flex373 2009-07-04 54. var factory:BeanFactory= CSSBeanFactory.getInstance();var service:UserAuthService= factory.getBeanByType(UserAuthService);service.addEventListener( ResultEvent.RESULT,handleResult);service.executeAuth(user);Flex373 2009-07-04 55. Flex373 2009-07-04 56. var factory:BeanFactory= CSSBeanFactory.getInstance();factory.addEventListener(Event.COMPLETE,handle);factory.loadModule(config-module.swf);Flex373 2009-07-04 57. Flex373 2009-07-04 58. var factory:BeanFactory= CSSBeanFactory.getInstance();factory.inject(this);Flex373 2009-07-04 59. public class Control implements IMXMLObject{ [Inject(prop.hoge)] public var hoge:String; [Inject] public var service:IService;public function initialized( document:Object, id:String):void{CSSBeanFactory.getInstance().inject(this); } } Flex373 2009-07-04 60. Flex373 2009-07-04 61. DI DIFlex373 2009-07-04 62. Flex373 2009-07-04