Spring4d »çÀÌÆ® ÁÖ¼Ò : https://bitbucket.org/sglienke/spring4d
Spring4d´Â ÀÚ¹ÙÀÇ Spring ±â´ÉÀ» µ¨ÆÄÀÌ¿¡¼µµ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ ¸¸µç ¶óÀ̺귯¸®´Ù. ÀÌ ¶óÀ̺귯¸®¸¦ ¸¸µç »ç¶÷Àº Á¤¸» õÀç´Ù. ÀÌ ±â¸·Èù ¶óÀ̺귯¸®ÀÇ ¸î°¡Áö À¯¿ëÇÑ ±â´ÉÀ» ¼Ò°³ÇÏ°íÀÚ ÇÑ´Ù.
¿¹Àü¿¡ °´Ã¼ ÀÚµ¿ Æı«¿¡ °üÇÑ ±ÛÀ» ¿Ã·È´ø ÀûÀÌ Àִµ¥, ±×´ç½Ã ÀÚµ¿Æı«º¸´Ù ¸í½ÃÀûÀÎ Æı«°¡ ´õ ³´´Ù¶ó°í ÇÏ´Â »ç¶÷µéÀÌ ÀÖ¾ú´Ù. Àý´ë·Î ±×·¸Áö ¾Ê´Ù. ÀÚµ¿ Æı«´Â Çö´ë °³¹ß ¾ð¾î¿¡¼ ¸Å¿ì Áß¿äÇÑ ºÎºÐÀ¸·Î ÀÚ¹Ù, ´å³Ý µî ÃÖ±Ù ¾ð¾îµéÀº ±âº»ÀûÀ¸·Î Áö¿øÇÏ´Â ±â´ÉÀÌ´Ù.
ÀÚµ¿ Æı«°¡ ¿Ö Áß¿äÇÑ°¡Çϸé, ¼Ò½º ÇÑÁÙÀ» ÁÙÀÌ¸é µð¹ö±ëÇÒ °Ô Çϳª ÁÙ¾îµç´Ù´Â ÀÌ·Ð ¶§¹®ÀÌ´Ù. À̸»ÀÎÁï ÇÁ·Î±×·¥ ¼Ò½º´Â ªÀ» ¼ö·Ï µð¹ö±ëÇÒ °Ô Àû´Ù´Â °ÍÀÌ´Ù.
¿ì¸®°¡ ¾Æ´Â ´ë´Ù¼ö ¾ð¾î±â´Éµé, ¿¹¸¦ µé¸é, ÇÔ¼öÁöÇâ, °´Ã¼ÁöÇâ, Lambda, À͸íÇÔ¼ö, LINQ µîÀÌ »ç½Ç ¼Ò½º ÁÙÀ̱⸦ À§ÇÑ ¹æ¹ýµéÀÌ´Ù.
µ¨ÆÄÀÌ´Â ±âº»ÀûÀ¸·Î Owner ¸ÞÄ¿´ÏÁòÀ¸·Î ÀÚµ¿ Æı«¸¦ Áö¿øÇÏÁö¸¸, Owner ¸ÞÄ¿´ÏÁòÀ» »ç¿ëÇÏ·Á¸é ±× °´Ã¼ÀÇ Å¬·¡½º´Â ¹Ýµå½Ã TComponent·Î ºÎÅÍ »ó¼ÓÀ» ¹Þ¾Æ¾ß ÇÑ´Ù.
±×·¸´Ù¸é TComponent·Î ºÎÅÍ »ó¼Ó¹ÞÁö ¾ÊÀº Ŭ·¡½º °´Ã¼ÀÇ ÀÚµ¿ Æı«´Â ¾î¶»°Ô ÇØ¾ß ÇÒ±î? °ú°Å¿¡´Â ¿©±â¿¡ ´ëÇÑ ÇعýÀÌ ¾ø¾úÁö¸¸, ÃÖ±Ù µ¨ÆÄÀÌ¿¡ Generic ±â´É°ú Record¹®¹ýÀÌ °ÈµÇ¸é¼, XE2 À̻󿡼´Â µåµð¾î ÀÏ¹Ý °´Ã¼µµ ÀÚµ¿ Æı«°¡ °¡´ÉÇÏ°Ô µÇ¾ú´Ù.
Spring4d¸¦ »ç¿ëÇÏ¸é ±× ¹æ¹ýÀº ¸Å¿ì °£´ÜÇÏ´Ù.
´ë·« ´ÙÀ½°ú °°´Ù.
uses Spring; // uses¹®¿¡ Spring Ãß°¡
// ´ÙÀ½°ú °°Àº TMyObject°¡ ÀÖ´Ù°í °¡Á¤Çϸé
type TMyObject = class(TObject) public public field1 : String; constructor Create; destructor Destroy; override; end;
´ÙÀ½°ú °°ÀÌ ÀÚµ¿ Æı«¸¦ ±¸ÇöÇÒ ¼ö ÀÖ´Ù.
var obj : Managed<TMyObject>; // Managed generic ·¹ÄÚµå »ý¼º begin obj := TMyObject.Create; // Managed generic¿¡ °´Ã¼ »ý¼ºÇؼ ´ëÀÔ // ½ÇÁ¦ TMyObject ¸â¹ö°ªÀ» ÂüÁ¶ÇÏ´Â µÎ°¡Áö ¹æ¹ý // ¾Æ·¡ ¶óÀÎ µÎ°¡Áö ¸ðµÎ µ¿ÀÏÇÔ obj.Value.field1 := 'aaaa'; TMyObject(obj).field1 := 'aaaa'; // ÀÌ ½ÃÁ¡¿¡ ÀÚµ¿À¸·Î Æı«µÈ´Ù. end;
Spring4dÀÇ ¹öÀü¿¡ µû¶ó¼ Managed<> ´ë½Å¿¡ Owned<> ¸¦ »ç¿ëÇØ¾ß ÇÒ ¼öµµ ÀÖ´Ù. ¾Æ¸¶µµ ÃÖ±Ù ¹öÀüÀÌ Managed¸¦ »ç¿ëÇÏ´Â °Í °°´Ù.
ÇÔ¼öÀÇ ·ÎÄ® º¯¼ö·Î Managed<T> °´Ã¼¸¦ Á¤ÀÇÇÏ¸é ¼ÓÇÑ ÇÔ¼ö ¸®ÅÏ Á÷Àü¿¡, ´Ù¸¥ Ŭ·¡½ºÀÇ ¸â¹ö·Î Á¤ÀÇÇß´Ù¸é ±× Å¬·¡½º °´Ã¼°¡ Æı«µÉ ¶§ ÀÚµ¿ Æı«µÈ´Ù. µû¶ó¼ À̸¦ ÀÌ¿ëÇÏ¸é ¾î¶² Ŭ·¡½º°¡ ´Ù¸¥ Ŭ·¡½ºÀÇ °´Ã¼¸¦ ³»Æ÷ÇÏ´Â °æ¿ì, ÀÚµ¿ Æı«¸¦ ¸Å¿ì ½±°Ô ±¸ÇöÇÒ ¼ö ÀÖ´Ù.
TInner = class // end;
TOuter = class inner : Managed<TInner>; constructor Create; end;
constructor TOuter.Create; begin inherited; inner := TInner.Create; end;
À§¿Í °°ÀÌ TInner°ú TOuter Ŭ·¡½º¸¦ Á¤ÀÇÇß´Ù¸é ´ÙÀ½°ú °°Àº ÄÚµùÀÌ °¡´ÉÇÏ´Ù.
var outer : Managed<TOuter>; begin outer := TOuter.Create; // outer °´Ã¼ »ç¿ë
// ÀÌ ½ÃÁ¡¿¡¼ ¸ðµç °´Ã¼µéÀÌ ÀÚµ¿ Æı« µÊ end;
µ¨ÆÄÀÌ ¸Å´º¾óÀ» º¸¸é °´Ã¼¸¦ »ý¼ºÇÏ°í Æı«ÇÒ ¶§ try finally end ºí·°À¸·Î ó¸®Ç϶ó°í µÇ¾î ÀÖ´Ù. Managed¸¦ »ç¿ëÇÏ¸é ±×·² ÇÊ¿ä°¡ ¾ø´Ù. ¹Ýµå½Ã ÀÚµ¿ Æı«ÇØ Áֱ⠶§¹®ÀÌ´Ù.
Spring4d´Â Source Æú´õ ¾Æ·¡¿¡ ¿©·¯ ÇÏÀ§ Æú´õ¿¡ ¼Ò½º ÆÄÀϵéÀÌ ºÐ»êµÇ¾î ÀÖ´Ù. Spring4d ¶óÀ̺귯¸®¸¦ ÆíÇÏ°Ô »ç¿ëÇÏ·Á¸é ¸ðµç ¼Ò½º¸¦ ÇÑ Æú´õ¿¡ ¸ô¾Æ µÎ°í, µ¨ÆÄÀÌ ¿É¼ÇÀÇ Library ¼³Á¤¿¡¼ ±× °æ·Î¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ ÆíÇÏ´Ù.
|