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ÄÚ´æÒç³öµÄÏêϸ½â¾ö·½°¸¡£±¾ÎÄ×ܽáÄÚ´æÒç³öÖ÷ÒªÓÐÁ½ÖÖÇé¿ö£¬¶øJVM¾³£µ÷ÓÃÀ¬»ø»ØÊÕÆ÷½â¾öÄÚ´æ¶Ñ²»×ãµÄÎÊÌ⣬µ«ÊÇÓÐʱÈÔ»áÓÐÄÚ´æ²»×ãµÄ´íÎó¡£×÷Õß·ÖÎöÁËJVMÄÚ´æÇøÓò×é³É¼°JVMÉèÖÃÐéÄâÄÚ´æµÄ·½Ê½£¬´Ó¶ø¸ø³öÁËһϵÁнâ¾ö·½°¸¡£ Ò»¡¢ÄÚ´æÒç³öÀàÐÍ 1¡¢java.lang.OutOfMemoryError: PermGen space JVM¹ ......
/**
SimpleDateFormatº¯ÊýÓï·¨£º
G Äê´ú±êÖ¾·û
y Äê
M ÔÂ
d ÈÕ
h ʱ ÔÚÉÏÎç»òÏÂÎç (1~12)
H ʱ ÔÚÒ»ÌìÖÐ (0~23)
m ·Ö
s Ãë
S ºÁÃë
E ÐÇÆÚ
D Ò»ÄêÖеĵڼ¸Ìì
F Ò»ÔÂÖеڼ¸¸öÐÇÆÚ¼¸
w Ò»Äê ......
1¡¢ÃæÏò¶ÔÏóµÄÌØÕ÷ÓÐÄÄЩ·½Ãæ
1.³éÏó£º
³éÏó¾ÍÊǺöÂÔÒ»¸öÖ÷ÌâÖÐÓ뵱ǰĿ±êÎ޹صÄÄÇЩ·½Ã棬ÒÔ±ã¸ü³ä·ÖµØ×¢ÒâÓ뵱ǰĿ±êÓйصķ½Ãæ¡£³éÏó²¢²»´òËãÁ˽âÈ«²¿ÎÊÌ⣬¶øÖ»ÊÇÑ¡ÔñÆäÖеÄÒ»²¿·Ö£¬ÔÝʱ²»Óò¿·Öϸ½Ú¡£³éÏó°üÀ¨Á½¸ö·½Ã棬һÊǹý³Ì³éÏ󣬶þÊÇÊý¾Ý³éÏó¡£
2.¼Ì³Ð£º
¼Ì³ÐÊÇÒ»ÖÖÁª½áÀàµÄ²ã´ÎÄ£ÐÍ£¬²¢ÇÒÔÊÐíºÍ¹Ä ......
ÔÚÒ»¸öÃæÏò¶ÔÏóµÄϵͳÖУ¬ÏµÍ³µÄ¸÷ÖÖ¹¦ÄÜÊÇÓÉÐíÐí¶à¶àµÄ²»Í¬¶ÔÏóÐ×÷Íê³ÉµÄ¡£ÔÚÕâÖÖÇé¿öÏ£¬¸÷¸ö¶ÔÏóÄÚ²¿ÊÇÈçºÎʵÏÖ×Ô¼ºµÄ¶ÔϵͳÉè¼ÆÈËÔ±À´½²¾Í²»ÄÇôÖØÒª
ÁË£»¶ø¸÷¸ö¶ÔÏóÖ®¼äµÄÐ×÷¹ØϵÔò³ÉΪϵͳÉè¼ÆµÄ¹Ø¼ü¡£Ð¡µ½²»Í¬ÀàÖ®¼äµÄͨÐÅ£¬´óµ½¸÷Ä£¿éÖ®¼äµÄ½»»¥£¬ÔÚϵͳÉè¼ÆÖ®³õ¶¼ÊÇÒª×ÅÖØ¿¼Âǵģ¬ÕâÒ²ÊÇϵͳÉè¼ÆµÄÖ÷
Òª ......
×î½üÏîÄ¿ÖÐÓöµ½ÁËÉÏÒÆÏÂÒƲÙ×÷µÄÒ»¸ö²Ù×÷£¬ÒÔÇ°Ò²¿´µ½¹ý£¬µ«Ò»Ö±Ã»ÓÐÈ¥Ñо¿¹ý£¬Õâ´ÎÏîÄ¿ÖÐÓöµ½ÁË£¬Ò²¾ÍÈ¥Ñо¿ÁËÒ»°Ñ£¬ÆäʵʵÏÖÔÀíҲͦ¼òµ¥µÄ£¬Ëµ°×Á˾ÍÊÇ
Òª¼Ç¼Êý¾Ý¿âÀïµÄÒª½øÐÐÅÅÐò±íµÄ×ܼǼÊýÁ¿£¬È»ºó¸ù¾ÝÑ»·µÄ´ÎÊý£¬¶àд¼¸¸öÒþ²Ø±äÁ¿£¬½øÐÐÉÏÒÆÏÂÒƲÙ×÷µÄʱºò½øÐÐÅжϾͿÉÒÔÁË¡£
&n ......