Éæ¼°·´ÉäºÍ¶¯Ì¬´úÀí¡£
ÔÚѧϰ֮ǰ£¬ÏÈÌá³ö¼¸¸öÎÊÌ⣬´ø×ÅÎÊÌâÀ´¿´´úÂë:
1.ʲôÊǶ¯Ì¬´úÀí?
2.ΪʲôʹÓö¯Ì¬´úÀí?
3.ʹÓÃËüÓÐÄÄЩºÃ´¦?
4.ÄÄЩµØ·½ÐèÒª¶¯Ì¬´úÀí?
--------------------·Ö¸ôÏß-----------------------------
ºÍ¶¯Ì¬´úÀíÓйصÄÓÐÁ½¸öÀà
1.interface InvocationHandler
Object invoke(Object proxy, Method method, Object[] args)
Ö»ÕâÒ»¸ö·½·¨£¬ºóÃæÔÙ˵
2.class Proxy
ÕæÕý±íʾ¶¯Ì¬´úÀíµÄÀ࣬ÌṩÁ½¸ö¾²Ì¬·½·¨:
Class<?> getProxyClass(ClassLoader loader, Class<?>[] interface)
ÓÃÀ´²úÉú´úÀíÀ࣬²ÎÊýÒªÌṩinterfaceÊý×飬Ëü»áÉú³ÉÕâЩinterfaceµÄ¡°ÐéÄâʵÏÖ¡±£¬
ÓÃÀ´Ã°³äÕæÊµµÄ¶ÔÏó¡£
Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
²úÉú´úÀí¶ÔÏ󣬶àÁËInvocationHandler²ÎÊý(Ö»ÊÇInvocationHandler½Ó¿ÚµÄʵÏÖÀà)£¬
ËüÓë´úÀí¶ÔÏó¹ØÁª£¬µ±ÇëÇó·Ö·¢µ½´úÀí¶ÔÏóºó£¬»á×Ô¶¯Ö´ÐÐh.invoke(...)·½·¨£¬
invoke·½·¨¾ÍÊÇÎÒÃÇÓÃÀ´×öN¶àÊÂÇéµÄµØ·½ -_-¡£
--------------------·Ö¸ôÏß-----------------------------
¿´ÍêÉÏÃæµÄ´úÂ룬´óÖÂÃ÷°×¶¯Ì¬´úÀíµÄº¬Ò壺
A½Ó¿ÚÓÐc·½·¨£¬ÀàBʵÏÖA½Ó¿Ú£¬Ô±¾Ó¦¸ÃÊÇÖ´ÐÐBÀàÖеÄc·½·¨£¬¿ÉÏÖÔÚ²»ÕâÑù×ö£»
ÎÒÉùÃ÷²úÉúBÀàµÄ´úÀíÀàB',ÓÉËüÀ´Ã°³äBÀàµÄ¡°Ðֵܡ±²¢¡°ÊµÏÖ¡±A½Ó¿Ú£¬
¶ÔÍâ½çÀ´ËµB'Ó¦¸ÃÒ²ÓÐc·½·¨£¬¿Éµ±ÕæÕýµ÷ÓÃËüµÄʱºò£¬
Ëü»áÈ¥Ö´ÐÐÓëËü¹ØÁªInvocationHandlerµÄinvoke()·½·¨£¬
ÔÚÕâ¸ö·½·¨ÀïÃæÄã¿ÉÒÔ×öºÜ¶àÊÂÇé¡£ÕâÑù£¬Õâ¸öÇëÇó¾Í±»¡°´úÀí¡±µ½ÆäËüµØ·½È¥ÁË¡£
ÏÂÃæÊǸù¾ÝÎÒµÄÀí½â»µÄÒ»¸ö˵Ã÷ͼ
--------------------·Ö¸ôÏß-----------------------------
ÒýÓÃÍøÉϵÄÒ»¸öÀý×ÓÀ´ËµÃ÷ÎÊÌâ(Óв¿·Ö¸Ä¶¯£¬×ªÔØ×Ô£ºhttp://callan.iteye.com/blog/161806)
ÕæÊµµÄ½Ó¿Ú:
Java´úÂë
- public interface Hello {
-
- void sayHello(String to);
-
- void print(String p);
-
- }
ËüµÄÕæÊµÊµÏÖÀà:
Java´úÂë
- public class HelloImpl implements Hello {
-
- public void sayHello(String to) {
- System.out.println("Say hello to " + to);
- }
-
- public void print(String s) {
- System.out.println("print " + s);
- }
-
- }
ÔÚÕâÀïÉú³ÉÓë´úÀíÀàÏà¹ØÁªµÄInvocationHandler¶ÔÏó
Java´úÂë
- public class LogHandler implements InvocationHandler {
-
- private Object dele;
-
- public LogHandler(Object obj) {
- this.dele=obj; }
- public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
- doBefore();
-
- Object result = method.invoke(dele, args);
- after();
- return result;
- }
-
- private void doBefore() {
- System.out.println("before....");
- }
-
- private void after() {
- System.out.println("after....");
- }
- }
×îºóÊDzâÊÔÀà:
Java´úÂë
- public class ProxyTest {
-
- public static void main(String[] args) {
- HelloImpl impl = new HelloImpl();
- LogHandler handler = new LogHandler(impl);
-
- Hello hello = (Hello) Proxy.newProxyInstance(impl.getClass().getClassLoader(), impl.getClass().getInterfaces(), handler);
-
-
- hello.print("All the test");
- hello.sayHello("Denny");
- }
-
- }
ÕâÀïÊÇÊä³ö½á¹û:
Java´úÂë
- before...
- print : All the test
- after....
- before....
- Say hello to Denny
- after....
--------------------·Ö¸ôÏß-----------------------------
×îºóÊÔ×ÅÀ´»Ø´ð֮ǰÌá³öµÄÎÊÌâ:
1.ʲôÊǶ¯Ì¬´úÀí?
Ò»ÖÖÓÃÓÚת·¢ÇëÇ󣬽øÐÐÌØÊâ´¦ÀíµÄ»úÖÆ£¬¡°¶¯Ì¬¡±Ó¦¸ÃÖ¸µÄÊÇ¡°ÔËÐÐÆÚ¡±¡£
2.ΪʲôʹÓö¯Ì¬´úÀí?
¿ÉÒÔ¶ÔÇëÇó½øÐÐÈκδ¦Àí(ÈçÊÂÎñ£¬ÈÕÖ¾µÈ£¬Õâ¶¼ÊÇÍøÉÏ˵µÄ£¬ÎÒµ±È»¿ÉÒÔ×öÈκδ¦Àí)
3.ʹÓÃËüÓÐÄÄЩºÃ´¦?
ÈçÉÏ
4.ÄÄЩµØ·½ÐèÒª¶¯Ì¬´úÀí?
²»ÔÊÐíÖ±½Ó·ÃÎÊijЩÀࣻ¶Ô·ÃÎÊÒª×öÌØÊâ´¦ÀíµÈ£¬ÎÒÖ»ÄÜÏëµ½ÕâЩ¡£
--------------------·Ö¸ôÏß-----------------------------
ÆäËüһЩÏë·¨£º
1.Èç¹ûÏëÉùÃ÷²úÉúBÀàµÄ´úÀíÀ࣬ÄǸöBÀà±ØÐëҪʵÏÖ½Ó¿Ú£¬Èç¹ûûÓнӿڣ¬
´úÀíÀà¾Í²»ÄÜαװ³ÉBÀàµÄ¡°Ðֵܡ±£¬Ò²¾ÍûÓдæÔÚµÄÒâ˼£¬
ÆäʵҲ¿ÉÒÔαװ³ÉBÀàµÄ¡°º¢×Ó¡±£¬¶ÔÍâËûÃÇÓй²Í¬µÄ½Ó¿Ú£¬¿ÉÒÔÕâÑù×ö°É?
2.µ±ÇëÇó´úÀíÀàµÄ·½·¨Ê±£¬Õâ¸öÇëÇó»á±»×ªµ½Ö´ÐÐÓë´úÀíÀà¹ØÁªInvocationHandler
µÄinvoke·½·¨¡£ÄÇInvocationHandlerµ½µ×ÊÇʲô?¶ÔËüµÄÀí½â¿ÉÒÔÊÇÕâÑù:
ËüÓÃÀ´´¦Àí·½·¨µÄµ÷Óã¬ÊµÏÖÀàÒ²ÓÐͬÑùµÄÒâÒ壻Óë´úÀíÀà¶ÔÏóÏà¹ØÁªÔò±íʾ£¬
Ëü¾ÍÊǸºÔð´¦Àí´úÀíÀàÓ¦¸ÃÓе͝×÷£¬°ÑËùÓеķ½·¨ÇëÇó·Ö·¢µ½invokeÕâ¸ö·½·¨ÉÏ¡£
--------------------·Ö¸ôÏß-----------------------------
ѧϰºó×ܽᣬ¼È¿ÉÒÔÈ«ÃæµØ¹Û²ì·ÖÎö£¬ÓÖÄܼÓÉîÓ¡Ïó¡£
Èç¹ûÎÒµÄÀí½âÓÐÎ󣬱ðÈ˵ÄÖ¸Ö¤»á¶ÔÎÒ²úÉú»ý¼«Ó°Ïì¡£
Èç¹ûÎÒµÄÀí½âÕýÈ·£¬°ïÖúÆäËüÈËÀí½âÊÇÎÒµÄÈÙÐÒ¡£
³õѧÕߣ¬Çë¶à¶àÖ¸½Ì¡£
shi
Êý¾Ý¿âÌṩÁËËÄÖÖÊÂÎñ¸ôÀë¼¶±ð
²»Í¬µÄ¸ôÀë¼¶±ð²ÉÓò»Í¬µÄËøÀ࿪À´ÊµÏÖ.
ÔÚËÄÖÖ¸ôÀë¼¶±ðÖÐ, SerializableµÄ¼¶±ð×î¸ß, Read Uncommited¼¶±ð×îµÍ.
´ó¶àÊýÊý¾Ý¿âµÄĬÈϸôÀë¼¶±ðΪ: Read Commited,ÈçSql Server , Oracle.
ÉÙÊýÊý¾Ý¿âĬÈϵĸôÀë¼¶±ðΪRepeatable Read, ÈçMySQL InnoDB´æ´¢ÒýÇæ
¼´Ê¹ÊÇ×îµÍµÄ¼¶±ð,Ò²²»»á³öÏÖ µÚÒ»Àà ¶ªÊ§ ¸üÐÂÎÊÌâ .
1. Ôà¶Á(ÊÂÎñûÌá½»£¬Ìáǰ¶ÁÈ¡)£ºÔà¶Á¾ÍÊÇÖ¸µ±Ò»¸öÊÂÎñÕýÔÚ·ÃÎÊÊý¾Ý£¬²¢ÇÒ¶ÔÊý¾Ý½øÐÐÁËÐ޸쬶øÕâÖÖÐ޸Ļ¹Ã»ÓÐÌá½»µ½Êý¾Ý¿âÖУ¬Õâʱ£¬ÁíÍâÒ»¸öÊÂÎñÒ²·ÃÎÊÕâ¸öÊý¾Ý£¬È»ºóʹÓÃÁËÕâ¸öÊý¾Ý¡£
2. ²»¿ÉÖØ¸´¶Á(Á½´Î¶ÁµÄ²»Ò»ÖÂ) £ºÊÇÖ¸ÔÚÒ»¸öÊÂÎñÄÚ£¬¶à´Î¶ÁͬһÊý¾Ý¡£ÔÚÕâ¸öÊÂÎñ»¹Ã»ÓнáÊøÊ±£¬ÁíÍâÒ»¸öÊÂÎñÒ²·ÃÎʸÃͬһÊý¾Ý¡£ÄÇô£¬ÔÚµÚÒ»¸öÊÂÎñÖеÄÁ½´Î¶ÁÊý¾ÝÖ®¼ä£¬ÓÉÓÚµÚ¶þ¸öÊÂÎñµÄ Ð޸ģ¬ÄÇôµÚÒ»¸öÊÂÎñÁ½´Î¶Áµ½µÄµÄÊý¾Ý¿ÉÄÜÊDz»Ò»ÑùµÄ¡£ÕâÑù¾Í·¢ÉúÁËÔÚÒ»¸öÊÂÎñÄÚÁ½´Î¶Áµ½µÄÊý¾ÝÊDz»Ò»ÑùµÄ£¬Òò´Ë³ÆÎªÊDz»¿ÉÖØ¸´¶Á¡£ÀýÈ磬һ¸ö±à¼ÈËÔ±Á½´Î¶ÁȡͬһÎĵµ£¬µ«ÔÚÁ½´Î¶Áȡ֮¼ä£¬×÷ÕßÖØÐ´Á˸ÃÎĵµ¡£µ±±à¼ÈËÔ±µÚ¶þ´Î¶ÁÈ¡ÎĵµÊ±£¬ÎĵµÒѸü¸Ä¡£Ôʼ¶ÁÈ¡²»¿ÉÖØ¸´¡£Èç¹ûÖ»ÓÐÔÚ×÷ÕßÈ«²¿Íê³É±àдºó±à¼ÈËÔ±²Å¿ÉÒÔ¶ÁÈ¡Îĵµ£¬Ôò¿ÉÒÔ±ÜÃâ¸ÃÎÊÌâ¡£
3. »Ã¶Á : ÊÇÖ¸µ±ÊÂÎñ²»ÊǶÀÁ¢Ö´ÐÐʱ·¢ÉúµÄÒ»ÖÖÏÖÏó£¬ÀýÈçµÚÒ»¸öÊÂÎñ¶ÔÒ»¸ö±íÖеÄÊý¾Ý½øÐÐÁËÐ޸ģ¬ÕâÖÖÐÞ¸ÄÉæ¼°µ½±íÖеÄÈ«²¿Êý¾ÝÐС£Í¬Ê±£¬µÚ¶þ¸öÊÂÎñÒ²ÐÞ¸ÄÕâ¸ö±íÖÐ µÄÊý¾Ý£¬ÕâÖÖÐÞ¸ÄÊÇÏò±íÖвåÈëÒ»ÐÐÐÂÊý¾Ý¡£ÄÇô£¬ÒÔºó¾Í»á·¢Éú²Ù×÷µÚÒ»¸öÊÂÎñµÄÓû§·¢ÏÖ±íÖл¹ÓÐûÓÐÐ޸ĵÄÊý¾ÝÐУ¬¾ÍºÃÏó·¢ÉúÁ˻þõÒ»Ñù¡£ÀýÈ磬һ¸ö±à¼ÈËÔ±¸ü¸Ä×÷ÕßÌá½»µÄÎĵµ£¬µ«µ±Éú²ú²¿ÃŽ«Æä¸ü¸ÄÄÚÈݺϲ¢µ½¸ÃÎĵµµÄÖ÷¸´±¾Ê±£¬·¢ÏÖ×÷ÕßÒѽ«Î´±à¼µÄвÄÁÏÌí¼Óµ½¸ÃÎĵµÖС£Èç¹ûÔÚ±à¼ÈËÔ±ºÍÉú²ú²¿ÃÅÍê³É¶ÔÔʼÎĵµµÄ´¦Àí֮ǰ£¬ÈκÎÈ˶¼²»Äܽ«Ð²ÄÁÏÌí¼Óµ½ÎĵµÖУ¬Ôò¿ÉÒÔ±ÜÃâ¸ÃÎÊÌâ¡£
4.µÚÒ»Àà¸üжªÊ§(»Ø¹ö¶ªÊ§)£º
µ±2¸öÊÂÎñ¸üÐÂÏàͬµÄÊý¾ÝÔ´£¬Èç¹ûµÚÒ»¸öÊÂÎñ±»Ìá½»£¬¶øÁíÍâÒ»¸öÊÂÎñÈ´±»³·Ïú£¬ÄÇô»áÁ¬Í¬µÚÒ»¸öÊÂÎñËù×öµÄ¸úÐÂÒ²±»³·Ïú¡£Ò²¾ÍÊÇ˵µÚÒ»¸öÊÂÎñ×öµÄ¸úжªÊ§ÁË¡£
5.µÚ¶þÀà¸üжªÊ§(¸²¸Ç¶ªÊ§)£º
µÚ ¶þÀà¸üжªÊ§ÊµÔÚʵ¼ÊÓ¦ÓÃÖо³£Óöµ½µÄ²¢·¢ÎÊÌ⣬ËûºÍ²»¿ÉÖØ¸´¶Á±¾ÖÊÉÏÊÇͬһÀಢ·¢ÎÊÌ⣬ͨ³£Ëû±»¿´×ö²»¿ÉÖØ¸´¶ÁµÄÌØÀý£ºµ±2¸ö»òÕâ¸ö¶à¸öÊÂÎñ²éѯͬÑùµÄ ¼Ç¼Ȼºó¸÷×Ô»ùÓÚ×î³õµÄ²éѯ½á¹û¸üиÃÐÐʱ£¬»áÔì³ÉµÚ¶þÀඪʧ¸üС£ÒòΪÿ¸öÊÂÎñ¶¼²»ÖªµÀ²»ÖªµÀÆäËûÊÂÎñµÄ´æÔÚ£¬×îºóÒ»¸öÊÂÎñ¶Ô¼Ç¼×öµÄÐ޸Ľ«¸²¸ÇÆäËûÊ Îñ¶Ô¸Ã¼Ç¼×öµÄÒÑÌá½»µÄ¸úÐÂ...
²¹³ä : »ùÓÚÔªÊý¾ÝµÄ Spring ÉùÃ÷ÐÔÊÂÎñ :
Isolation ÊôÐÔÒ»¹²Ö§³ÖÎåÖÖÊÂÎñÉèÖ㬾ßÌå½éÉÜÈçÏ£º
l DEFAULT ʹÓÃÊý¾Ý¿âÉèÖõĸôÀë¼¶±ð ( ĬÈÏ ) £¬ÓÉ DBA ĬÈϵÄÉèÖÃÀ´¾ö¶¨¸ôÀë¼¶±ð .
l READ_UNCOMMITTED »á³öÏÖÔà¶Á¡¢²»¿ÉÖØ¸´¶Á¡¢»Ã¶Á ( ¸ôÀë¼¶±ð×îµÍ£¬²¢·¢ÐÔÄÜ¸ß )
l READ_COMMITTED »á³öÏÖ²»¿ÉÖØ¸´¶Á¡¢»Ã¶ÁÎÊÌâ£¨Ëø¶¨ÕýÔÚ¶ÁÈ¡µÄÐУ©
l REPEATABLE_READ »á³ö»Ã¶Á£¨Ëø¶¨Ëù¶ÁÈ¡µÄËùÓÐÐУ©
l SERIALIZABLE ±£Ö¤ËùÓеÄÇé¿ö²»»á·¢Éú£¨Ëø±í£©
²»¿ÉÖØ¸´¶ÁµÄÖØµãÊÇÐÞ¸Ä :
ͬÑùµÄÌõ¼þ , Äã¶ÁÈ¡¹ýµÄÊý¾Ý , ÔٴζÁÈ¡³öÀ´·¢ÏÖÖµ²»Ò»ÑùÁË
»Ã¶ÁµÄÖØµãÔÚÓÚÐÂÔö»òÕßɾ³ý
ͬÑùµÄÌõ¼þ , µÚ 1 ´ÎºÍµÚ 2 ´Î¶Á³öÀ´µÄ¼Ç¼Êý²»Ò»Ñù