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
Ïà¹ØÎĵµ£º
°æÈ¨ËùÓУ¬×ªÔØ×¢Ã÷³ö´¦£¡
×ªÔØÇëЯ´ø´ËÐÅÏ¢£ºhuangfox
-----------------------------------------------------------------
³éÏ󹤳§ºÍ¹¤³§·½·¨ ¸Õ¿ªÊ¼ºÜÈÝÒ×»ìÏý£¬ÖÁÉÙÎÒÊÇÕâÑùµÄ£¡
²»¹ýËûÃDzúÉúµÄÔµÓÉÀ´¿´£¬»¹ÊÇ¿ÉÒԺúÃÇø·ÖµÄ¡£
1.¹¤³§·½·¨£ºÊÇΪÁ˱ÜÃâÓ¦ÓÃÖ±½ÓʵÀýÀà²ã´Î½á¹¹ÖеľßÌåÀ࣬Ìṩһ¸ö·½·¨¸ù¾ÝÔËÐÐÇé ......
½ñÌ츴ϰÁËÒ»ÏÂÕâЩ֪ʶ£¬Ë³±ã×öÁËϱʼÇ.
1.¼Ä´æÆ÷£º×î¿ìµÄ´æ´¢Çø, ÓɱàÒëÆ÷¸ù¾ÝÐèÇó½øÐзÖÅä,ÎÒÃÇÔÚ³ÌÐòÖÐÎÞ·¨¿ØÖÆ.
2. Õ»£º´æ·Å»ù±¾ÀàÐ͵ıäÁ¿Êý¾ÝºÍ¶ÔÏóµÄÒýÓ㬵«¶ÔÏó±¾Éí²»´æ·ÅÔÚÕ»ÖУ¬¶øÊÇ´æ·ÅÔÚ¶Ñ£¨new ³öÀ´µÄ¶ÔÏ󣩻òÕß³£Á¿³ØÖУ¨×Ö·û´®³£Á¿¶ÔÏó´æ·ÅÔÚ³£Á¿³ØÖС££©
3. ¶Ñ£º´æ·ÅËùÓÐnew³öÀ´µÄ¶ÔÏó¡£
4. ¾²Ì¬Óò£ ......
Ïß³Ì×é
ÔÚJavaÖÐÿһ¸öÏ̶߳¼¹éÊôÓÚij¸öÏß³Ì×é¹ÜÀíµÄÒ»Ô±£¬ÀýÈçÔÚÖ÷º¯Êýmain()Ö÷¹¤×÷Á÷³ÌÖвúÉúÒ»¸öỊ̈߳¬Ôò²úÉúµÄÏß³ÌÊôÓÚmainÕâ¸öÏß³Ì×é¹ÜÀíµÄÒ»Ô±¡£¼òµ¥µØËµ£¬Ïß³Ì×é¾ÍÊÇÓÉÏß³Ì×é³ÉµÄ¹ÜÀíÏ̵߳ÄÀ࣬Õâ¸öÀàÊÇjava.lang.ThreadGroupÀà¡£
¿ÉÒÔͨ¹ýʹÓÃÈçÏ´úÂë»ñÈ¡´ËÏß³ÌËùÊôÏß³Ì×éµÄÃû³Æ¡£
Thread.currentThread().ge ......
×é¼þ
¹¦ÄÜ
Com.guipei.listener. SessionListener
¼àÌý×é¼þ£¬Íê³ÉHttpSessionContextµÄ¹¦ÄÜ
index.jsp
ʵÏÖÓû§µÇ½£¬´´½¨ÐµÄsession
logout.jsp
ʵÏÖÓû§Í˳ö£¬Óû§×Ô¶¯É¾³ýsession
display.jsp
ÏÔʾÓû§µÇ½ÐÅÏ¢£¬ÔÚÓû§µÇ½ºó×Ô¶¯×ªÈë
session.jsp
Áгöµ±Ç°ËùÓеÄsession
kill.jsp
ɱµôÖ¸¶¨µÄ»á»° ......
ºÜÔç֮ǰд¹ýÀûÓ÷ºÐͺͷ´Éä»úÖÆ³éÏóDAO £¬¶ÔÆäÖлñÈ¡×ÓÀà·ºÐ͵ÄclassÒ»Ö±²»ÊǺÜÀí½â¡£¹Ø¼üµÄµØ·½ÊÇHibernateBaseDaoµÄ¹¹Ôì·½·¨ÖеÄ
Type genType = getClass().getGenericSuperclass();
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
entityClass = (Class)params[0] ......