±ÍÇÏ´Â ¼Õ´Ô À̽ʴϴÙ
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ
  
  µ¨¸¶´ç °ø½Ä ÀºÇà°èÁÂ
  ÇϳªÀºÇà 227-910235-83607
  ¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø)
ÇÁ·ÎÁ§Æ® °Ô½ÃÆÇ
ÅõÇ¥°Ô½ÃÆÇ
µ¨¸¶´ç¼Ò°³
±âÃʺÎÅÍ È°¿ë±îÁö! µ¨ÆÄÀÌ ±³À° - µ¥ºê±â¾î
°­ÁÂ, ÆÁ, Á¤º¸ °­ÁÂ, ÆÁ, Á¤º¸ ÀÔ´Ï´Ù.
±Û³»¿ë - °­ÁÂ, ÆÁ, Á¤º¸
 Spring4d °­Á 1 (°´Ã¼ ÀÚµ¿ Æı«)
ÁÖÁ¤¼·
(ÁÖÁ¤¼·)
2016-12-01 ¿ÀÀü 9:46:48
Ä«Å×°í¸®: ÆÁ
3621ȸ Á¶È¸



µî·ÏµÈ ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.
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 ¼³Á¤¿¡¼­ ±× °æ·Î¸¦ ÁöÁ¤Çϴ °ÍÀÌ ÆíÇÏ´Ù.