Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
SpringÓëÊÂÎñ
 
×÷Õߣº¼å±ý¹û×Ó¶à·Å´Ð À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ 2016-7-8
  2448  次浏览      28
 

ÒªÏëÁ˽âSpringµÄÊÂÎñ£¬Ê×ÏÈÒªÁ˽âÊý¾Ý¿âÊÂÎñµÄ»ù±¾ÖªÊ¶£¬Êý¾Ý¿â²¢·¢»á²úÉúºÜ¶àÎÊÌ⣬SpringʹÓÃThreadLocal¼¼ÊõÀ´´¦ÀíÕâЩÎÊÌ⣬ÄÇôÎÒÃDZØÐëÁ˽âJavaµÄThreadLocal¼¼Êõ¡£ÏÂÃæÎÒÃÇÖðÒ»Á˽⡣

µÚÒ»»ØºÏ£ºÊý¾Ý¿âÊÂÎñµÄ»ù±¾ÖªÊ¶

ʲôÊÇÊý¾Ý¿âÊÂÎñ£¿

Ò»´ÎÖ´Ðжà¸öSQLÓï¾ä£¬È«²¿Ö´Ðгɹ¦Ôò³É¹¦£¬ÓÐÒ»¸öÖ´ÐÐʧ°ÜÔòÈ«²¿Ê§°Ü¡£¼´¡°Ò»ÈÙ¾ãÈÙ£¬Ò»Ëð¾ãË𡱡£

Êý¾Ý¿âµÄÊÂÎñ±ØÐëͬʱÂú×ãÏÂÁÐËĸöÌõ¼þ£º

Ô­×ÓÐÔ£¨Atomic£©£º±ÈÈçÊý¾Ý¿âÒ»´ÎÖ´ÐÐËĸöSQLÓï¾ä£¬ÄÇôÕâËĸöSQL¾ÍÊǺê¹ÛµÄÒ»¸ö²»¿É·Ö¸îµ¥Ôª£¬¡°Ò»ÈÙ¾ãÈÙ£¬Ò»Ëð¾ãË𡱡£È«²¿Ö´Ðгɹ¦Ôò³É¹¦£¬ÓÐÒ»¸öÖ´ÐÐʧ°ÜÔòÈ«²¿Ê§°Ü¡£Èý·Ö¹éÔªÆø¡£

Ò»ÖÂÐÔ£¨Consistency£©£ºÕû¸öÊÂÎñ²»¹Ü³É¹¦ÁË»¹ÊÇʧ°ÜÁË£¬Õû¸öÊý¾Ý¿âµÄ״̬ºÍ¹æÔò²»Äܱ仯¡£¼´£ºAÕË»§×ªÕË100Ôªµ½BÕË»§£¬Õâ¸öÊÂÎñ¹ý³Ì½áÊøºóǰºó£¬Êý¾Ý¿âÖÐ×ܵÄÕË»§½ð¶îÊDz»±äµÄ¡£

¸ôÀëÐÔ£¨Isolation£©£º²»Í¬µÄÊÂÎñ²¢·¢Ö´ÐÐʱ£¬¸÷×ÔÓµÓв»Í¬µÄÊý¾Ý¿Õ¼ä£¬Äã×ßÄãµÄÑô¹ØµÀ£¬ÎÒ×ßÎҵĶÀľÇÅ£¬»¥²»¸ÉÈÅ¡£

µ«²¢·ÇÍêÈ«²»¸ÉÈÅ£¬Êý¾Ý¿â¹æ¶¨ÁËÊÂÎñ¸ôÀë¼¶±ð£¬¸ôÀë¼¶±ðÔ½¸ß£¬Êý¾ÝµÄÒ»ÖÂÐÔÔ½ºÃ£¬²¢·¢ÐÔÔ½Èõ¡£

³Ö¾ÃÐÔ£¨Durability£©£ºÒ»µ©ÊÂÎñÌá½»³É¹¦£¬ÊÂÎñÖеÄËùÓÐÊý¾Ý²Ù×÷¶¼±ØÐë±»³Ö¾Ã»¯µ½Êý¾Ý¿âÖС£

ÕâÑùÒ»À´£¬¼´Ê¹¸ÕÌá½»Í꣬Êý¾Ý¿â¾Í±ÀÀ££¬µ±ÖØÆôÊý¾Ý¿âÖ®ºó£¬Ò²¿ÉÒÔ¸ù¾ÝÒѾ­±£´æ£¨³Ö¾Ã»¯£©µÄ²Ù×÷À´»Ö¸´Êý¾Ý¡£

Ò»ÖÂÐÔÊǽá¹û£¬ÆäËûÈý¸öÊÇÊֶΡ£

  • Êý¾Ý¿â¹ÜÀíÒ»°ã²ÉÓÃÖØÖ´ÐÐÈÕÖ¾±£Ö¤Ô­×ÓÐÔ¡¢Ò»ÖÂÐԺͳ־ÃÐÔ¡£

  • ÖØÖ´ÐÐÈÕÖ¾¼Ç¼ÁËÊý¾Ý¿â±ä»¯µÄÿһ¸ö¶¯×÷¡£ÕâÑù£¬¼´Ê¹Êý¾Ý¿âÊÂÎñÔÚÖ´ÐÐÁËÒ»²¿·Ö²Ù×÷ºó·¢Éú´íÎóÍ˳ö£¬¿ÉÒÔ¸ù¾ÝÖØÖ´ÐÐÈÕÖ¾À´³·ÏúÒѾ­Ö´ÐеIJÙ×÷¡£

  • ¶ÔÓÚÒѾ­Ìá½»µÄÊÂÎñ£¬¼´Ê¹Êý¾Ý¿â±ÀÀ££¬ÔÙÖØÆôÊý¾Ý¿âʱҲÄܹ»¸ù¾ÝÈÕÖ¾¶ÔÉÐδ³Ö¾Ã»¯µÄÊý¾Ý½øÐÐÏàÓ¦µÄÖØÖ´ÐвÙ×÷¡£

  • Êý¾Ý¿â¹ÜÀíϵͳ²ÉÓÃÊý¾Ý¿âËø»úÖÆÀ´±£Ö¤ÊÂÎñµÄ¸ôÀëÐÔ£¨ÕýÈçJava²ÉÓöÔÏóËø»úÖÆ½øÐÐÏß³Ìͬ²½¡££©

Êý¾Ý²¢·¢µÄÎÊÌâ

¶à¸ö¿Í»§¶Ëͬʱ²Ù×÷Ò»¸öÊý¾Ý¿â£¬¸Ã²¢·¢¹ý³Ì¾Í¿ÉÄÜÒýÆð²¢·¢ÎÊÌ⣺

Ôà¶Á(dirty read)£ºAÊÂÎñ¶ÁÈ¡BÊÂÎñÉÐδÌá½»µÄÊý¾Ý²¢½øÐÐһϵÁвÙ×÷£¬½á¹ûBÊÂÎñÖ´ÐÐÁ˻عö£¬ÄÇôÕâʱ£¬AÊÂÎñ¶Áµ½µÄÊý¾Ý¾ÍÊDz»±»ÈϿɵģ¬ÊÇÔàÊý¾Ý¡£

²»¿ÉÖØ¸´¶Á(unrepeatable read):±ÈÈ磺A¿ªÊ¼Á˲éѯÊÂÎñ£¬B¿ªÊ¼ÁËÌá¿îÊÂÎñ¡£AµÚÒ»´Î²éѯÓà¶îΪ1000Ôª£¬ÕâʱBÌáÈ¡100Ôª£¬AµÚ¶þ´Î²éѯÓà¶îʱ£¬±ä³ÉÁË900Ôª£¬ÓëµÚÒ»´Î²éѯµÄÓà¶î²»Í¬¡£

»ÃÏó¶Á£¨phantom read£©£ºÒ»°ã·¢ÉúÔÚ¼ÆËãͳ¼ÆÊý¾ÝµÄÊÂÎñÖС£±ÈÈç£»ÒøÐÐÕýÔÚͳ¼ÆËùÓÐÕË»§µÄ´æ¿î×ܶͳ¼Æ³öÀ´Îª10000Ôª¡£ÕâʱÕýºÃÐÂÔöÁËÒ»¸öÕË»§£¬´æ¿î1000Ôª¡£ÔÙ´Îͳ¼Æ·¢ÏÖ×ܶîΪ11000Ôª£¬Óëǰһ´Îͳ¼Æ²»Í¬¡£

²»¿ÉÖØ¸´¶ÁÊÇÖ¸¶Áµ½Á˸ü¸ÄµÄÊý¾Ý£¨Ò»°ãÇé¿öÏÂÐèÒªÌí¼ÓÐм¶Ëø£¬×èÖ¹²Ù×÷ÖеÄÊý¾Ý±ä»¯£©£¬¶ø»ÃÏó¶ÁÊÇÖ¸¶Áµ½ÁËÐÂÔöµÄÊý¾Ý£¨ÍùÍùÐèÒªÌí¼Ó±í¼¶Ëø£¬½«Õû¸ö±íËø¶¨£©¡£

µÚÒ»Àඪʧ¸üУºÄ¿Ç°ÕË»§Óà¶î1000Ôª£¬A¿ªÊ¼ÊÂÎñ-->B¿ªÊ¼ÊÂÎñ-->B»ãÈë100Ôª£¬Óà¶î¸ÄΪ1100Ôª-->BÌá½»ÊÂÎñ¨¤AÈ¡³ö100Ôª£¬°ÑÓà¶î¸ÄΪ900Ôª-->A³·ÏúÊÂÎñ-->Óà¶î»Ö¸´Îª1000Ôª£¨¶ªÊ§¸üУ©¡£

AÊÂÎñ³·Ïúʱ£¬°ÑBÌá½»µÄ¸üÐÂÊý¾Ý¸ø¸²¸ÇÁË¡£

µÚ¶þÀඪʧ¸üУºB¿ªÊ¼ÊÂÎñ-->A¿ªÊ¼ÊÂÎñ-->B²éѯÓà¶îΪ1000Ôª-->A²éѯÓà¶îΪ1000Ôª-->BÈ¡³ö100Ôª£¬°ÑÓà¶î¸ÄΪ900Ôª-->BÌá½»ÊÂÎñ-->A»ãÈë100Ôª-->AÌá½»ÊÂÎñ-->A°ÑÓà¶î¸ÄΪ1100Ôª£¨¶ªÊ§¸üУ©¡£

AÔÚÌá½»ÊÂÎñʱ£¬°ÑBËù×öµÄ²Ù×÷¶ªÊ§¡£

JDBC¶ÔÊÂÎñµÄÖ§³Ö

ConnectionĬÈÏÇé¿öÏÂÊÇ×Ô¶¯Ìá½»µÄ¡£

ΪÁ˰Ѷà¸öÊÂÎñµ±³ÉÒ»¸öÊÂÎñÖ´ÐУ¬¾Í±ØÐëÇ¿ÖÆ×èÖ¹×Ô¶¯Ìá½»£¨µÚÎåÐУ©¡£

µÚ¶þ»ØºÏ£ºThreadLocal

Springͨ¹ý¸÷ÖÖÄ£°åÀཱུµÍÁË¿ª·¢ÕßʹÓø÷Öֳ־ü¼ÊõµÄÄѶȡ£

ÕâЩģ°åÀà¶¼ÊÇḬ̈߳²È«µÄ¡£

Ä£°åÀàÐèÒª°ó¶¨Êý¾ÝÁ¬½Ó»òÕ߻ỰµÄ×ÊÔ´¡£

ÕâЩ×ÊÔ´±¾ÉíÊÇ·ÇḬ̈߳²È«µÄ¡£

ËäȻģ°åÀàͨ¹ý×ÊÔ´³Ø»ñÈ¡Á¬½Ó»òÕ߻Ự£¬

µ«ÊÇ×ÊÔ´³Ø½â¾öµÄÊÇÊý¾ÝÁ¬½Ó»òÕß×ÊÔ´µÄ»º´æÎÊÌ⣬

¶ø²»ÊÇḬ̈߳²È«ÎÊÌâ¡£

°´ÕÕ¹ßÀý£¬²ÉÓÃsynchronized½øÐÐÏß³Ìͬ²½¡£

µ«ÊǸÃÏß³Ìͬ²½»úÖÆ½â¾ö¾ßÌåÎÊÌâʱ£¬¿ª·¢ÄѶȴ󡢽µµÍ²¢·¢ÐÔ¡¢Ó°ÏìϵͳÐÔÄÜ¡£

ËùÒÔ£¬Ä£°åÀಢδ²ÉÓÃÏß³Ìͬ²½»úÖÆ¡£

ÄÇô£¬Ä£°åÀ྿¾¹²ÉÓÃʲô·½Ê½±£Ö¤Ḭ̈߳²È«µÄÄØ£¿

´ð°¸£ºThreadLocal£¡

ThreadLocalÊÇʲô£¿

ThreadLocal£¬¹ËÃû˼Ò壬Ëü²»ÊÇÒ»¸öỊ̈߳¬¶øÊÇÏ̵߳ÄÒ»¸ö±¾µØ»¯¶ÔÏó¡£¶àÏ̳߳ÌÐòʹÓÃThreadLocalά»¤±äÁ¿Ê±£¬Ã¿Ò»¸öÏ߳̽«Äõ½¸Ã±äÁ¿µÄÒ»¸ö¸±±¾£¬´Ó¶ø£¬Ã¿¸öÏ̶߳Ը÷×Ô±äÁ¿µÄ¸±±¾µÄ¸ü¸Ä¶¼²»»áÓ°Ïìµ½ÆäËûÏ̡߳£

Ò»¸öThreadLocalʵÀý

ÉÏÀýºÜ¼òµ¥£¬Èý¸öÏ̶߳¼Äõ½Integer¶ÔÏóµÄ¸±±¾£¬¸ÃInteger¶ÔÏóµÄ³õʼ»¯ÖµÉèÖÃΪ0£¬È»ºó¸÷×ÔÐ޸쬻¥²»Ó°Ïì¡£

³ýÁËset¡¢get¡¢initialValueÖ®Í⣬ThreadLocal»¹ÓÐÒ»¸ö·½·¨£ºremove(),¸Ã·½·¨½«µ±Ç°±äÁ¿¸±±¾´Ó¸ÃÏß³ÌÖÐɾ³ý£¬¼õÉÙÄÚ´æµÄÕ¼Óá£

ÓëThreadͬ²½»úÖÆµÄ±È½Ï

  • ÔÚͬ²½»úÖÆÖУ¬Í¨¹ý¶ÔÏóµÄËø»úÖÆ±£Ö¤Í¬Ò»Ê±¼äÖ»ÓÐÒ»¸öÏ̷߳ÃÎʱäÁ¿£¬¸Ã±äÁ¿ÊǶà¸öÏ̹߳²ÏíµÄ£¬ÄÇô£¬Ã¿¸öÏß³ÌÔÚʲôʱºò¿ÉÒÔ¶Ô±äÁ¿¶Áд£¬Ê²Ã´Ê±ºòÒª¶Ô¸Ã¶ÔÏó¼ÓËø£¬Ê²Ã´Ê±ºòÊͷŶÔÏóËøµÈ£¬¶¼Òª×¼È·Åжϣ¬Âß¼­¸´ÔÓ£¬±àдÄѶȴó¡£

  • ThreadLoaclΪÿһ¸öÏß³ÌÌṩһ¸ö±äÁ¿µÄ¸±±¾£¬¸ôÀëÁ˶àÏ̷߳ÃÎÊÊý¾ÝµÄ³åÍ»¡£ThreadLocalÌṩÁËḬ̈߳²È«µÄ¶ÔÏó·â×°£¬ÔÚ±àд¶àÏ̴߳úÂëʱ£¬¿ÉÒ԰Ѳ»°²È«µÄ±äÁ¿·â×°½øThreadLocal¡£

×ÜÖ®£¬¶Ô¶àÏ̹߳²ÏíµÄÎÊÌ⣬ͬ²½»úÖÆ²ÉÓÃÁË¡±ÒÔʱ¼ä»»¿Õ¼ä£¬·ÃÎÊ´®Ðл¯£¬¶ÔÏó¹²Ïí»¯¡±¡£¶øThreadLocalÔòÊÇ¡°ÒԿռ任ʱ¼ä£¬·ÃÎʲ¢Ðл¯£¬¶ÔÏó¶ÀÏí»¯¡±¡£Ç°ÕßÖ»Ìṩһ·Ý±äÁ¿£¬Èò»Í¬µÄÏß³ÌÅŶӷÃÎÊ£¬¶øºóÕßΪÿһ¸öÏ̶߳¼ÌṩÁËÒ»·Ý±äÁ¿£¬Òò´Ë¿ÉÒÔͬʱ·ÃÎʶø»¥²»Ó°Ïì¡£

SpringÓëThreadLocal

ÓÐ״̬¾ÍÊÇÓÐÊý¾Ý´æ´¢¹¦ÄÜ¡£ÓÐ״̬¶ÔÏó(Stateful Bean)£¬¾ÍÊÇÓÐʵÀý±äÁ¿µÄ¶ÔÏ󣬿ÉÒÔ±£´æÊý¾Ý£¬ÊÇ·ÇḬ̈߳²È«µÄ¡£ÔÚ²»Í¬·½·¨µ÷Óü䲻±£ÁôÈκÎ״̬¡£

ÎÞ״̬¾ÍÊÇÒ»´Î²Ù×÷£¬²»Äܱ£´æÊý¾Ý¡£ÎÞ״̬¶ÔÏó(Stateless Bean)£¬¾ÍÊÇûÓÐʵÀý±äÁ¿µÄ¶ÔÏó.²»Äܱ£´æÊý¾Ý£¬ÊDz»±äÀ࣬ÊÇḬ̈߳²È«µÄ¡£

Ò»°ãÇé¿öÏ£¬Ö»ÓÐÎÞ״̬bean²Å¿ÉÒÔÔÚ¶àÏ̻߳·¾³Ï¹²Ïí£¨¼ÈȻûÓÐ״̬£¬²»Äܱ£´æÊý¾Ý£¬Ëæ±ã¹²ÏíÀ²£©

ÔÚspringÖУ¬¾ø´ó²¿·ÖBean¶¼¿ÉÒÔÉùÃ÷Ϊsingleton×÷ÓÃÓò¡££¨Èç¹ûÔÚ<bean>ÖÐÖ¸¶¨BeanµÄ×÷Ó÷¶Î§ÊÇ scopt="prototype",ÄÇôϵͳ½«bean·µ»Ø¸øµ÷ÓÃÕߣ¬spring¾Í²»¹ÜÁË£¨Èç¹ûÁ½¸öʵÀýµ÷Óõϰ£¬Ã¿Ò»´Îµ÷Óö¼ÒªÖØÐ³õʼ»¯£¬Ò»¸öʵ ÀýµÄÐ޸IJ»»áÓ°ÏìÁíÒ»¸öʵÀýµÄÖµ¡£Èç¹ûÖ¸¶¨BeanµÄ×÷Ó÷¶Î§ÊÇscope="singleton"£¬Ôò°Ñbean·Åµ½»º³å³ØÖУ¬²¢½«beanµÄÒýÓ÷µ»Ø ¸øµ÷ÓÃÕß¡£Õâ¸öʱºò£¬Èç¹ûÁ½¸öʵÀýµ÷Óõϰ£¬ÒòΪËüÃÇÓõÄÊÇͬһ¸öÒýÓã¬ÈκÎÒ»·½µÄÐ޸ͼ»áÓ°Ïìµ½ÁíÒ»·½¡££©£©

ÕýÒòΪSpring¶ÔһЩBean(RequestContextholder¡¢TransactionSynchronizationManager¡¢ LocaleContextHolderµÈ)ÖзÇḬ̈߳²È«µÄ¡±×´Ì¬ÐÔ¶ÔÏó¡±²ÉÓÃThreadLocal·â×°£¬ÈÃËüÃdzÉΪḬ̈߳²È«µÄ¡±×´Ì¬ÐÔ¶ÔÏó¡±£¬Òò´ËÓР״̬µÄbean¾ÍÄܹ»ÒÔsingleton·½Ê½ÔÚ¶àÏß³ÌÖÐÕý³£¹¤×÷ÁË¡£

Spring¶ÔÓÐ״̬beanµÄ¸ÄÔì˼·

·ÇḬ̈߳²È«£º

ÓÉÓÚµÚ8ÐеÄconnÊÇ·ÇḬ̈߳²È«µÄ³ÉÔ±±äÁ¿£¬

Òò´ËaddTopic()·½·¨Ò²ÊÇ·ÇḬ̈߳²È«µÄ£¬

ÿ´ÎʹÓÃʱ¶¼±ØÐëд´½¨Ò»¸öTopicDaoʵÀý(·Çsingleton)¡£

¶Ô·ÇḬ̈߳²È«µÄconn½øÐиÄÔ죺

ÉÏÀý½öΪÁ˼òµ¥ËµÃ÷Ô­Àí£¬²¢²»×öÉ£¬Àý×Ó´Ö²Ú£¬²¢²»ÄÜÔÚʵ¼Ê»·¾³ÖÐʹÓ㬻¹ÓкܶàÒª¿¼ÂÇµÄÆäËûÎÊÌâ¡£

µÚÈý»ØºÏ£ºSpring¶ÔÊÂÎñ¹ÜÀíµÄÖ§³Ö

  • ²»¹ÜÑ¡ÔñSpring JDBC,Hibernate£¬JPA»¹ÊÇiBatis£¬Spring¶¼ÈÃÎÒÃÇ¿ÉÒÔÓÃͳһµÄ±à³ÌÄ£ÐͽøÐÐÊÂÎñ¹ÜÀí¡£

  • SpringÊÂÎñ¹ÜÀíÓм¸¸öÖ÷ÒªµÄ³éÏó¸¸À࣬ÔÚÊÂÎñ¹ÜÀíµÄÔË×÷¹ý³ÌÖи÷˾ÆäÖ°£¬Ö÷ÒªµÄ¹¦ÄÜ£º

ÃèÊöÊÂÎñµÄ¸ôÀë¼¶±ð¡¢³¬Ê±Ê±¼ä¡¢ÊÇ·ñÖ»¶ÁµÈ¡£

¶¨ÒåÊÂÎñµÄÊôÐÔ£¬±ÈÈçÊÂÎñ¸ôÀ루µ±Ç°ÊÂÎñÓëÆäËûÊÂÎñµÄ¸ôÀë³Ì¶È£©¡¢ÊÂÎñ´«²¥¡¢ÊÂÎñ³¬Ê±¡¢Ö»¶Á״̬µÈ¡£

ÃèÊöÊÂÎñµÄ¾ßÌåÔËÐÐ״̬¡£

  • ¶ÔÓ¦²»Í¬µÄ³Ö¾Ã»¯¼¼Êõ£¬SpringÊÂÎñ¹ÜÀí·â×°Á˾ßÌåµÄʵÏÖÀࡣÿһÖÖʵÏÖÀà¶ÔÓ¦µÄÅäÖ÷½Ê½ÓÐËù²»Í¬¡£

  • SpringʹÓÃThreadLocal¼¼Êõ¸ø²»Í¬Ïß³ÌÌṩ¸÷×ÔµÄÊý¾ÝÁ¬½Ó¸±±¾¡£

  • Springͨ¹ýÊÂÎñ´«²¥ÐÐΪÀ´´¦ÀíÊÂÎñǶÌ×µ÷ÓÃʱµÄÔË×÷¡£

  • SpringÉùÃ÷ʽÊÂÎñ¹ÜÀíÊÇͨ¹ýAOPʵÏֵģ¬Í¨¹ýÉùÃ÷ÐÔÐÅÏ¢£¬Spring¸ºÔð½«ÊÂÎñ¹ÜÀíÔöÇ¿Âß¼­¶¯Ì¬Ö¯Èëµ½ÒµÎñ·½·¨µÄÁ¬½ÓµãÖС£ÕâЩÂß¼­°üÀ¨£º»ñÈ¡Ḭ̈߳ó¶¨×ÊÔ´¡¢¿ªÊ¼ÊÂÎñ¡¢Ìá½»/»Ø¹öÊÂÎñ¡¢½øÐÐÒ쳣ת»»ºÍ´¦ÀíµÈ¡£

  • »ùÓÚtx/aopÃüÃû¿Õ¼äÅäÖÃÊÂÎñ£ºÔÚXMLÖÐÅäÖÃÄ¿±êÀà¡¢ÊÂÎñ¹ÜÀíÆ÷¡¢ÔöÇ¿Àà¡¢¶¨ÒåÇÐÃæ£¬ÒýÈëÔöÇ¿µÈ¡£

  • ʹÓÃ×¢½âÅäÖÃÉùÃ÷ʽÊÂÎñ£º@Transactional¡£

 

   
2448 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

Java ÖеÄÖÐÎıàÂëÎÊÌâ
Java»ù´¡ÖªÊ¶µÄÈýÊ®¸ö¾­µäÎÊ´ð
Íæ×ª Java Web Ó¦Óÿª·¢
ʹÓÃSpring¸üºÃµØ´¦ÀíStruts
ÓÃEclipse¿ª·¢iPhone WebÓ¦ÓÃ
²å¼þϵͳ¿ò¼Ü·ÖÎö

Struts+Spring+Hibernate
»ùÓÚJ2EEµÄWeb 2.0Ó¦Óÿª·¢
J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Java EE 5ÆóÒµ¼¶¼Ü¹¹Éè¼Æ
Javaµ¥Ôª²âÊÔ·½·¨Óë¼¼Êõ
Java±à³Ì·½·¨Óë¼¼Êõ

Struts+Spring+Hibernate/EJB+ÐÔÄÜÓÅ»¯
»ªÏÄ»ù½ð ActiveMQ Ô­ÀíÓë¹ÜÀí
ijÃñº½¹«Ë¾ Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢
ij·çµç¹«Ë¾ Java Ó¦Óÿª·¢Æ½Ì¨ÓëÇ¨ÒÆ
ÈÕÕÕ¸Û J2EEÓ¦Óÿª·¢¼¼Êõ¿ò¼ÜÓëʵ¼ù
ij¿ç¹ú¹«Ë¾ ¹¤×÷Á÷¹ÜÀíJBPM
¶«·½º½¿Õ¹«Ë¾ ¸ß¼¶J2EE¼°ÆäÇ°ÑØ¼¼Êõ