JavaϵĿò¼Ü±à³Ì(5)
·´Éä¡¢ProxyºÍÔªÊý¾ÝÊÇJava×îÇ¿µÄÈý¸öÌØÕ÷£¬ÔÙ¼ÓÉÏCGLib (Code Generation Library)
ºÍASM£¬Ê¹µÃJavaËäȻûÓÐRuby£¬Python°ãºóÉú¿É磬һÑùÄÜ×ö³öÇ¿º·µÄ¿ò¼Ü¡£
Proxy
¿ÉÒÔ¿´×÷ÊÇ΢Ð͵ÄAOP£¬Ã÷°×ÌṩÁËÔڼ̳кÍίÍÐÖ®ÍâµÄµÚÈý¸ö´úÂë·âװ;¾¶£¬Ö»ÒªÓÐ×ã¹»µÄÏëÏóÁ¦£¬¿ÉÒÔ×öµÃ·Ç³£ºÃÍæ£¬SpringµÄÔ´ÂëÀïÓÃProxy¾Í
ÓõúÜËæ±ã£¬¿´µÃÎҷdz£Ñۺ졣¿ÉϧProxy±ØÐë»ùÓÚ½Ó¿Ú¡£Òò´ËSpringµÄ×ö·¨£¬»ùÓÚ½Ó¿ÚµÄÓÃproxy,·ñÔò¾ÍÓÃcglib¡£AOPô£¬Ò»°ãСÊ·Ç
compoentÒ»¼¶µÄ¾Í²»Âé·³AspectJ³öÊÖÁË¡£
cglibµÄEnhancer˵ÆðÀ´ÉñÆæ£¬ÓÃÆðÀ´Ò»Ò³Ö½²»µ½¾Í½²ÍêÁË¡£
ËüµÄÔÀí¾ÍÊÇÓÃEnhancerÉú³ÉÒ»¸öÔÓÐÀàµÄ×ÓÀ࣬²¢ÇÒÉèÖúÃcallbackµ½proxy£¬ ÔòÔÓÐÀàµÄÿ¸ö·½·¨µ÷Óö¼»áתΪµ÷ÓÃʵÏÖÁËMethodInterceptor½Ó¿ÚµÄproxyµÄintercept() º¯Êý£º
public
Object intercept(Object o,Method method,Object[] args,MethodProxy proxy)
ÔÚ
intercept()º¯ÊýÀÄã¿ÉÒÔÔÚÖ´ÐÐObject
result=proxy.invokeSuper(o,args);À´Ö´ÐÐÔÓк¯Êý£¬ÔÚÖ´ÐÐǰºó¼ÓÈë×Ô¼ºµÄ¶«Î÷£¬¸Ä±äËüµÄ²ÎÊýÖµ£¬Ò²¿ÉÒÔÂ÷Ìì¹ýº££¬ÍêÈ«
¸É±ðµÄ¡£Ëµ°×ÁË£¬¾ÍÊÇAOPÖеÄaround advice¡£
AOPûÓгöÏÖÒÔǰ£¬¸ÃÁìÓò¾µäµÄÉè¼ÆÄ£Ê½ÊÇDecorator£¬ÏñJava IO StreamµÄÉè¼Æ¾ÍÊÇÈç´Ë.²»¹ý£¬Èç¹ûΪÿ¸öDAO, ÿ¸ö·½·¨µÄдDecoratorº¯Êý»áдËÀÈ˵ģ¬ËùÒÔÓÃÉÏcglibµÄºÃ´¦ÊÇÒ»´Î¹ýÀ¹½ØËùÓз½·¨¡£
ÁíÍ⣬cglib³ýÁËEnhancerÖ®Í⣬»¹ÓÐBulkBeanºÍTransform£¬¶¼ÊÇHibernate³Ö¾Ã»¯µÄ»ù´¡£¬µ«ÎĵµÆ¶·¦£¬Ò»Ê±»¹Ã»È¥¿´ÔõôÓá£
1.AOPÀï½²ÁËÒ»°Ù±é°¢Ò»°Ù±éµÄlog aspectÔÚcglibÊÇÕâÑù×öµÄ:
public
class
LogDAOProxy
implements
MethodInterceptor
{
private
Logger log
=
Logger.getLogger(LogDAOProxy.
class
);
private
Enhancer enhancer
=
new
Enhancer();
//
·µ»ØDAOµÄ×ÓÀà
public
Object getDAO(Class&nb
Ïà¹ØÎĵµ£º
Java™ ÓïÑÔ°üº¬Á½ÖÖÄÚÔÚµÄͬ²½»úÖÆ£ºÍ¬²½¿é£¨»ò·½·¨£©ºÍ volatile ±äÁ¿¡£ÕâÁ½ÖÖ»úÖÆµÄÌá³ö¶¼ÊÇΪÁËʵÏÖ´úÂëÏ̵߳ݲȫÐÔ¡£ÆäÖÐ Volatile ±äÁ¿µÄͬ²½ÐԽϲµ«ÓÐʱËü¸ü¼òµ¥²¢ÇÒ¿ªÏú¸üµÍ£©£¬¶øÇÒÆäʹÓÃÒ²¸üÈÝÒ׳ö´í¡£ÔÚÕâÆÚµÄ Java ÀíÂÛÓëʵ¼ù
ÖУ¬Brian Goetz ½«½éÉܼ¸ÖÖÕýȷʹÓà volatile ±äÁ¿µÄģʽ£¬²¢Õ ......
¾¡¹ÜÔÆ¼ÆËãÕâÒ»ÊõÓï²¢²»ÐÂÏÊ(AmazonÔÚ2006Äê¾Í¿ªÊ¼ÌṩËüµÄÔÆ·þÎñ)£¬µ«´Ó2008ÄêÆðËü²Å¿ªÊ¼ÕæÕý³ÉΪÁ÷Ðдʣ¬ÕâÆÚ¼ä£¬GoogleºÍ
AmazonµÄÔÆ·þÎñÖð½¥»ñµÃÁ˹«ÖڵĹØ×¢¡£ GoogleµÄApp EngineʹÓû§Äܹ»ÔÚGoogle»ù´¡ÉèÊ©ÉϹ¹½¨ºÍÍÐ¹Ü Web Ó¦ÓóÌÐò¡£
¡¡¡¡Á¬Í¬S3£¬AmazonWeb Services»¹°üÀ¨Elastic Cloud Compute
(EC2) ......
/**
SimpleDateFormatº¯ÊýÓï·¨£º
G Äê´ú±êÖ¾·û
y Äê
M ÔÂ
d ÈÕ
h ʱ ÔÚÉÏÎç»òÏÂÎç (1~12)
H ʱ ÔÚÒ»ÌìÖÐ (0~23)
m ·Ö
s Ãë
S ºÁÃë
E ÐÇÆÚ
D Ò»ÄêÖеĵڼ¸Ìì
F Ò»ÔÂÖеڼ¸¸öÐÇÆÚ¼¸
w Ò»Äê ......
ÔÚÄãµÄ´úÂëÀïµ÷ÓÃÁËһЩ×ÊÔ´Îļþ£¬ÈçͼƬ£¬ÒôÀֵȣ¬ÔÚµ÷ÊÔ»·¾³»òµ¥¶ÀÔËÐеÄʱºò¿ÉÒÔÕý³£ÏÔʾ»ò²¥·Å£¬¶øÒ»µ©´ò°üµ½jarÎļþÖУ¬ÕâЩ¶«¶«¾ÍÔÙÒ²³ö²»À´ÁË£¬³ý·Ç°ÑÕâ¸öjar·Åµ½ÔÀ´Î´´ò°üÒÔǰµÄĿ¼Ï£¬µ«Í¨³£jarÊǵ¥¶À·¢²¼µÄ¡£
[¹Ø¼ü×Ö] java jarÎļþ°ü ×ÊÔ´
¡¡¡¡¿ÉÄÜÓв»ÉÙ³õѧÕß»áÓÐÕâÑùµÄÀ§»ó£ºÔÚÄãµÄ´úÂëÀïµ÷ÓÃÁË ......