Java CGLIB
Java Cglib
1.CGLIB°üµÄ½éÉÜ
´úÀíΪ¿ØÖÆÒª·ÃÎʵÄÄ¿±ê¶ÔÏóÌṩÁËÒ»ÖÖ;¾¶¡£µ±·ÃÎʶÔÏóʱ£¬ËüÒýÈëÁËÒ»¸ö¼ä½ÓµÄ²ã¡£JDK×Ô´Ó1.3°æ±¾¿ªÊ¼£¬¾ÍÒýÈëÁ˶¯Ì¬´úÀí£¬²¢ÇÒ¾³£±»ÓÃÀ´¶¯Ì¬µØ´´½¨´úÀí¡£JDKµÄ¶¯Ì¬´úÀíÓÃÆðÀ´·Ç³£¼òµ¥£¬µ±ËüÓÐÒ»¸öÏÞÖÆ£¬¾ÍÊÇʹÓö¯Ì¬´úÀíµÄ¶ÔÏó±ØÐëʵÏÖÒ»¸ö»ò¶à¸ö½Ó¿Ú¡£Èç¹ûÏë´úÀíûÓÐʵÏֽӿڵļ̳еÄÀ࣬¸ÃÔõô°ì£¿ÏÖÔÚÎÒÃÇ¿ÉÒÔʹÓÃCGLIB°ü
CGLIBÊÇÒ»¸öÇ¿´óµÄ¸ßÐÔÄܵĴúÂëÉú³É°ü¡£Ëü¹ã·ºµÄ±»Ðí¶àAOPµÄ¿ò¼ÜʹÓã¬ÀýÈçSpring AOPºÍdynaop£¬ÎªËûÃÇÌṩ·½·¨µÄinterception£¨À¹½Ø£©¡£×îÁ÷ÐеÄOR Mapping¹¤¾ßhibernateҲʹÓÃCGLIBÀ´´úÀíµ¥¶Ësingle-ended(¶à¶ÔÒ»ºÍÒ»¶ÔÒ»)¹ØÁª£¨¶Ô¼¯ºÏµÄÑÓ³Ùץȡ£¬ÊDzÉÓÃÆäËû»úÖÆÊµÏֵģ©¡£EasyMockºÍjMockÊÇͨ¹ýʹÓÃÄ£·Â£¨moke£©¶ÔÏóÀ´²âÊÔjava´úÂëµÄ°ü¡£ËüÃǶ¼Í¨¹ýʹÓÃCGLIBÀ´ÎªÄÇЩûÓнӿڵÄÀà´´½¨Ä£·Â£¨moke£©¶ÔÏó¡£
CGLIB°üµÄµ×²ãÊÇͨ¹ýʹÓÃÒ»¸öС¶ø¿ìµÄ×Ö½ÚÂë´¦Àí¿ò¼ÜASM£¬À´×ª»»×Ö½ÚÂë²¢Éú³ÉеÄÀà¡£³ýÁËCGLIB°ü£¬½Å±¾ÓïÑÔÀýÈç GroovyºÍBeanShell£¬Ò²ÊÇʹÓÃASMÀ´Éú³ÉjavaµÄ×Ö½ÚÂë¡£µ±²»¹ÄÀøÖ±½ÓʹÓÃASM£¬ÒòΪËüÒªÇóÄã±ØÐë¶ÔJVMÄÚ²¿½á¹¹°üÀ¨classÎļþµÄ¸ñʽºÍÖ¸Á¶¼ºÜÊìϤ¡£
Figure 1: CGLIB Library and ASM Bytecode Framework
ͼһÏÔʾÁ˺ÍCGLIB°üºÍһЩ¿ò¼ÜºÍÓïÑԵĹØÏµÍ¼¡£ÐèҪעÒâµÄÊÇһЩ¿ò¼ÜÀýÈçSpring AOPºÍHibernate£¬ËüÃÇΪÁËÂú×ãÐèÒª¾³£Í¬Ê±Ê¹ÓÃJDKµÄ¶¯Ì¬´úÀíºÍCGLIB°ü¡£HiberaterʹÓÃJDKµÄ¶¯Ì¬´úÀíʵÏÖÒ»¸öרÃÅΪ WebShereÓ¦Ó÷þÎñÆ÷µÄÊÂÎñ¹ÜÀíÊÊÅäÆ÷£»Spring AOP£¬Èç¹û²»Ç¿ÖÆÊ¹ÓÃCGLIB°ü£¬Ä¬ÈÏÇé¿öÊÇʹÓÃJDKµÄ¶¯Ì¬´úÀíÀ´´úÀí½Ó¿Ú¡£
2.CGLIB ´úÀíµÄAPIS
CGLIB°üµÄ»ù±¾´úÂëºÜÉÙ£¬µ±Ñ§ÆðÀ´ÓÐÒ»¶¨µÄÀ§ÄÑ£¬Ö÷ÒªÊÇȱÉÙÎĵµ£¬ÕâÒ²ÊÇ¿ªÔ´Èí¼þµÄÒ»¸ö²»×ãÖ®´¦¡£Ä¿Ç°CGLIBµÄ°æ±¾ÊÇ£¨2.1.2£©,Ö÷ÒªÓÉһϲ¿·Ö×é³É£º
net.sf.cglib.core
µ×²ã×Ö½ÚÂë´¦ÀíÀ࣬ËûÃǴ󲿷ÖÓëASMÓйØÏµ¡£
? net.sf.cglib.transform
±àÒëÆÚ»òÔËÐÐÆÚÀàºÍÀàÎļþµÄת»»
? net.sf.cglib.proxy
ʵÏÖ´´½¨´úÀíºÍ·½·¨À¹½ØÆ÷µÄÀà
? net.sf.cglib.reflect
ʵÏÖ¿ìËÙ·´ÉäºÍC#·ç¸ñ´úÀíµÄÀà
? net.sf.cglib.util
¼¯ºÏÅÅÐò¹¤¾ßÀà
? net.sf.cglib.beans
JavaBeanÏà¹ØµÄ¹¤¾ßÀà
· ´ó¶àʱºò£¬½ö½öΪÁ˶¯Ì¬µØ´´½¨´úÀí£¬Äã½öÐèҪʹÓõ½´úÀí°üÖкÜÉÙµÄһЩAPI¡£
ÕýÈçÎÒÃÇÏÈǰËùÌÖÂ۵ģ¬CGLIB°üÊÇÔÚASM
Ïà¹ØÎĵµ£º
1 »ù±¾½éÉÜ
¿ÉÒÔ˵CSV¸ñʽµÄÎļþ¾³£Åöµ½£¬ºÎΪCSV¸ñʽ£¬CVSÈ«³Æcomma-separated values£¬¾ÍÊǵäÐ͵ÄÓöººÅ¸ô¿ªµÄÎļþ£¬±ÈÈçÏÂÃæÕâÖÖÎļþ¸ñʽ
Name,company
zhangsan,ibm
lisi,oracle
ÕâÖÖ¾ÍÊǵäÐ͵ÄCSV¸ñʽÎļþ¡£²»¹ýÒ²¿ÉÒÔÀ©Õ¹µ½ÆäËü·ûºÅ¸ô¿ªµÄ×Ö·û£¬±ÈÈç
Name#company
Zhangsan#ibm ......
¡¡¡¡ÄÇôҪ³ÉΪ¼Ü¹¹Ê¦µÄ;¾¶ËƺõÖ»ÓÐÏÖÔÚ½ÏΪÁ÷ÐеÄÈí¼þѧԺºÍ¸öÈË×ÔÎÒÅàÑøÁË¡£¹ØÓÚÈí¼þѧԺÎÒ½Ó´¥¹ý²»ÉÙ£¬Æä×ÚÖ¼¾ø´ó²¿·Ö¶¼ÊÇÔì¾Í(or´òÔì)ÆóÒµ ÐèÒªµÄÈí¼þ¼Ü¹¹Ê¦(or³ÌÐòÔ±orÈ˲Å)¡£½ÌʦÀ´Ô´ÓëÆóÒµ¡¢Ñ§Ô±À´Ô´ÓëÆóÒµ¡¢È˲ÅÊäË͵½ÆóÒµÊÇËûÃǰìѧµÄÊֶΡ£¾¡¹Ü¸÷¸öÈçÓêºó´ºËñ°ã³öÏÖµÄÈí¼þѧԺ¿ÚºÅ²î ²»¶à£¬µ«¿ÖÅ´ó¶àÖ»ÊÇΪÁËȦ ......
1¡¢StringÊÇ×î»ù±¾µÄÊý¾ÝÀàÐÍÂð?
»ù±¾Êý¾ÝÀàÐͰüÀ¨byte¡¢int¡¢char¡¢long¡¢float¡¢double¡¢booleanºÍshort¡£
java.lang.StringÀàÊÇfinalÀàÐ͵ģ¬Òò´Ë²»¿ÉÒԼ̳ÐÕâ¸öÀà¡¢²»ÄÜÐÞ¸ÄÕâ¸öÀࡣΪÁËÌá¸ßЧÂʽÚÊ¡¿Õ¼ä£¬ÎÒÃÇÓ¦¸ÃÓÃStringBufferÀà
2¡¢int ºÍ Integer ÓÐÊ²Ã´Çø±ð
Java ÌṩÁ½ÖÖ²»Í¬µÄÀàÐÍ£ºÒýÓÃÀàÐͺÍÔʼÀàÐÍ£¨ ......
½ñÌ츴ϰÁËÒ»ÏÂÕâЩ֪ʶ£¬Ë³±ã×öÁËϱʼÇ.
1.¼Ä´æÆ÷£º×î¿ìµÄ´æ´¢Çø, ÓɱàÒëÆ÷¸ù¾ÝÐèÇó½øÐзÖÅä,ÎÒÃÇÔÚ³ÌÐòÖÐÎÞ·¨¿ØÖÆ.
2. Õ»£º´æ·Å»ù±¾ÀàÐ͵ıäÁ¿Êý¾ÝºÍ¶ÔÏóµÄÒýÓ㬵«¶ÔÏó±¾Éí²»´æ·ÅÔÚÕ»ÖУ¬¶øÊÇ´æ·ÅÔÚ¶Ñ£¨new ³öÀ´µÄ¶ÔÏ󣩻òÕß³£Á¿³ØÖУ¨×Ö·û´®³£Á¿¶ÔÏó´æ·ÅÔÚ³£Á¿³ØÖС££©
3. ¶Ñ£º´æ·ÅËùÓÐnew³öÀ´µÄ¶ÔÏó¡£
4. ¾²Ì¬Óò£ ......
×é¼þ
¹¦ÄÜ
Com.guipei.listener. SessionListener
¼àÌý×é¼þ£¬Íê³ÉHttpSessionContextµÄ¹¦ÄÜ
index.jsp
ʵÏÖÓû§µÇ½£¬´´½¨ÐµÄsession
logout.jsp
ʵÏÖÓû§Í˳ö£¬Óû§×Ô¶¯É¾³ýsession
display.jsp
ÏÔʾÓû§µÇ½ÐÅÏ¢£¬ÔÚÓû§µÇ½ºó×Ô¶¯×ªÈë
session.jsp
Áгöµ±Ç°ËùÓеÄsession
kill.jsp
ɱµôÖ¸¶¨µÄ»á»° ......