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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Spring 4 Ö§³ÖµÄ Java 8 ÌØÐÔ
 
×÷ÕߣºÁõÔ¶Àû À´Ô´£ºBLOG ·¢²¼ÓÚ 2017-3-29
  2813  次浏览      27
 

Spring ¿ò¼Ü 4 Ö§³Ö Java 8 ÓïÑÔºÍ API ¹¦ÄÜ¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«Öصã·ÅÔÚ Spring 4 Ö§³ÖÐ嵀 Java 8 µÄ¹¦ÄÜ¡£×îÖØÒªµÄÊÇ Lambda ±í´ïʽ£¬·½·¨ÒýÓã¬JSR-310 µÄÈÕÆÚºÍʱ¼ä£¬ºÍ¿ÉÖØ¸´×¢ÊÍ¡£

Lambda ±í´ïʽ

Spring µÄ´úÂë¿âʹÓÃÁË Java 8 ´óÁ¿µÄº¯Êýʽ½Ó¿Ú£¬Lambda ±í´ïʽ¿ÉÒÔÓÃÀ´±àд¸ü¸É¾»ºÍ½ô´ÕµÄ´úÂ롣ÿµ±³öÏÖº¯Êýʽ½Ó¿ÚµÄ¶ÔÏóµÄÔ¤ÆÚʱÎÒÃDZã¿ÉÒÔÌṩһ¸ö Lambda ±í´ïʽ¡£ÈÃÎÒÃǽøÒ»²½¼ÌÐøÖ®Ç°Ê×ÏÈѧϰº¯Êýʽ½Ó¿Ú¡£

º¯Êýʽ½Ó¿Ú

Óе¥Ò»³éÏó·½·¨µÄ½Ó¿Ú±»³ÆÎªº¯Êýʽ½Ó¿Ú¡£ÏÂÃæÊÇ JDK Öк¯Êýʽ½Ó¿ÚµÄһЩÀý×Ó£º

Comparator Êǽö¾ßÓÐÒ»¸ö³éÏóµÄ·Ç¶ÔÏó·½·¨µÄº¯Êý¡£¾¡¹ÜÉùÃ÷ÁËÁ½¸ö³éÏó·½·¨£¬ÒòΪ equals ÊǶÔÓ¦ÓÚ¶ÔÏóµÄ¹«¹²·½·¨ËùÒÔ´Ó¼ÆÊýÀïÅųýÁË¡£ÆäÖÐÓÐÒ»¸ö¶ÔÏóÀà·½·¨ÇÒûÓзǶÔÏó·½·¨µÄ½Ó¿Ú²¢²»ÊǺ¯Êýʽ½Ó¿Ú¡£

Ò»¸ö½Ó¿ÚÈç¹ûÓÐÒ»¸ö³éÏóµÄ·Ç¶ÔÏóÀà·½·¨²¢ÇÒÀ©Õ¹×Ô¾ßÓÐΨһ¶ÔÏóÀà·½·¨µÄ·Çº¯Êýʽ½Ó¿Ú£¬Ôò³ÆÎªº¯Êýʽ½Ó¿Ú¡£

Spring ¿ò¼ÜµÄº¯Êýʽ½Ó¿ÚµÄÀý×Ó£º

@FunctionalInterface ×¢½â¿ÉÒÔÔÚ½Ó¿ÚÉùÃ÷µÄ¶¥²¿ÉùÃ÷Öб»Ê¹Ó㬵«Õâ²¢²»ÊDZØÐèµÄ¡£´Ë×¢½âÓÃÓÚÓɱàÒëÆ÷À´¼ì²â¸Ã½Ó¿ÚÊDz»ÊÇÓÐЧµÄº¯Êýʽ½Ó¿Ú¡£Èç¹ûÎÒÃÇÊÔͼÔÚ½Ó¿ÚÀﶨÒå¶à¸öµ¥Ò»³éÏó·½·¨£¬±àÒëÆ÷½«Å׳öÒ»¸ö´íÎó¡£

º¯ÊýÃèÊö·û

½Ó¿ÚµÄº¯ÊýÃèÊö·ûÊǸýӿڵÄÒ»¸ö³éÏó·½·¨µÄ·½·¨µÄÀàÐÍ¡£¸Ã·½·¨ÀàÐͰüÀ¨²ÎÊýÀàÐÍ£¬·µ»ØÀàÐÍºÍ throws ×Ӿ䡣

Àý:

Interface

Runnable

Comparable

Comparator

interface A { void foo() throws IOException; } 
interface B void foo() throws EOFException; }
interface AB extends A, B {}

interface X {List<String> bar(List<String> arg) throws IOException, SQLTransientException;}
interface Y {List bar(List<String> arg) throws EOFException, SQLException;}
interface Z extends X, Y {}

ÈçºÎ±àд Lambda ±í´ïʽ

Lambda ±í´ïʽµÄÓï·¨¿ÉÒÔ²ð·Ö³ÉÈý²¿·Ö£º

* Ò»¸ö¼ýÍ· (¨C>)

* ²ÎÊýÁбí:

Ò»¸ö Lambda ±í´ïʽ¿ÉÒÔ°üº¬0¸ö»ò¶à¸ö²ÎÊý

Àý:

() ¡ú { System.out.println(¡° No arguments¡±)  } ;

 (String arg) ¡ú { System.out.println(¡° One argument :  ¡±+arg); }

(String arg1, Integer arg2) ¡ú { System.out.println(¡°Two arguments : ¡±+arg1+¡± and ¡±+arg2); }

* ±í´ïʽÌå:

¿ÉÒÔÊǵ¥¸ö±í´ïʽ»ò´úÂë¿é¡£µ¥¸ö±í´ïʽ½«±»¼òµ¥µØÇóÖµ²¢·µ»Ø¡£

Àý: (String arg) ¡ú { System.out.println(¡° One argument : ¡±+arg); }

Èç¹û±í´ïʽÌ壨Body£©ÖдæÔÚÓï¾ä¿é£¬ÄÇôËü½«±»Åж¨Îª·½·¨Ì壬²¢ÇÒÔÚ¿éÖ´ÐкóÒþ²ØµÄ·µ»ØÓï¾ä½«¿ØÖÆÈ¨½»¸øµ÷ÓÃÕß¡£

ÏÖÔÚÎÒÃÇ¿´Ò»ÏÂÈçºÎʹÓà Lambda ±í´ïʽ£º

Àý1£º

// ʹÓà Lambda ±í´ïʽ

Àý2£º

//ʹÓà Lambda ±í´ïʽ

Äã¿ÉÒÔͨ¹ý Spring µÄ»Øµ÷º¯ÊýʹÓà Lambda ±í´ïʽ¡£ÀýÈ磬ÓÃÒ»¸ö ConnectionCallback ¼ìË÷¸ø¶¨ JDBC Á¬½ÓµÄÁÐ±í£¬¿Éд³ÉÈçÏÂÓï¾ä£º

jdbcTemplate.execute(connection -> connection.getCatalog())

·½·¨ÒýÓÃ

º¯Êýʽ½Ó¿ÚÒ²¿ÉÒÔʹÓ÷½·¨ÒýÓÃÀ´ÊµÏÖ£¬ÒýÓ÷½·¨»ò¹¹Ô캯Êýµ«²¢²»µ÷ÓÃËüÃÇ¡£·½·¨ÒýÓÃºÍ Lambda ±í´ïʽÊÇÀàËÆµÄ£¬µ«·½·¨ÒýÓÃÊÇÖ¸ÏÖÓÐÀàµÄ·½·¨£¬¶ø Lambda ¶¨ÒåÁËÒ»¸öÄäÃû·½·¨£¬²¢½«Æä×÷Ϊº¯Êýʽ½Ó¿ÚµÄʵÀý¡£

ÔÚ Java 8 ÖÐÒ»¸öÐÂÔö°üÖаüº¬Á˳£ÓÃÓÚ Lambda ±í´ïʽºÍ·½·¨ÒýÓõĺ¯Êýʽ½Ó¿Ú£ºjava.util.function¡£

Date Time API

ÔÚ Java ÖÐÏÖÓÐµÄ Date ºÍ Time Àà´æÔÚ¶à¸öÎÊÌâ¡£Date ºÍ Calendar ÀàµÄ×î´óÎÊÌâÖ®Ò»ÊÇËüÃDz»ÊÇḬ̈߳²È«µÄ¡£ÔÚ±àдÈÕÆÚ´¦Àí´úÂëʱ¿ª·¢ÈËÔ±²»µÃ²»ÌرðСÐIJ¢·¢ÎÊÌâ¡£Date ÀàÒ²²»Ö§³Ö¹ú¼Ê»¯£¬Òò´Ë²»Ö§³ÖÊ±Çø¡£¿ª·¢ÈËÔ±±ØÐë±àд´óÁ¿µÄ´úÂëÀ´Ö§³Ö²»Í¬µÄÊ±Çø¡£

Date ºÍ Time ÀàÒ²ÏÔÏÖ³ö²»¼ÑµÄ API Éè¼Æ¡£java.util.Date ÖеÄÔ´Ó0£¬ÈÕ´Ó1£¬Äê´Ó1900¿ªÊ¼¡£È±ÉÙÒ»ÖÂÐÔ¡£ÏÖÔÚÕâЩÓë Date ºÍ Time ÀàµÄÆäËü¼¸¸öÎÊÌâÔÚ Java 8 ÖеÄРDate ºÍ Time API ÖÐÒѽâ¾ö¡£

ÔÚ java.time °üÏÂÐ嵀 Date ºÍ Time API µÄÖØÒªµÄÀàÊÇ LocalDate£¬LocalTime ºÍ ZonedDateTime¡£

LocalDate ºÍ LocalTime

LocalDate ±íʾÈÕÆÚʱµÄĬÈϸñʽΪ YYYY-MM-DD£¬²¢Ã»ÓÐʱ¼ä¡£ÕâÊÇÒ»¸ö²»¿É±äÀà¡£ÎÒÃÇ¿ÉÒÔʹÓà now() ·½·¨»ñµÃµÄµ±Ç°ÈÕÆÚ¡£

н¨ LocalDate ʵÀýµÄÀý×Ó£º

//»ñÈ¡µ±Ç°ÈÕÆÚ

ÎÒÃÇÒ²¿ÉÒÔͨ¹ý¶ÔÄ꣬Ô£¬ÈÕµÄÊäÈë²ÎÊýÀ´Ð½¨ LocalDate ʵÀý¡£

// 2016Äê4ÔÂ1ÈÕ

LocalTime ±íʾÎÞÈÕÆÚµÄʱ¼ä£¬ÊDz»±äµÄ¡£Ê±¼äµÄĬÈϸñʽΪ hh:mm:ss.zzz¡£

н¨ LocalTime ʵÀýµÄÀý×Ó£º

//»ñÈ¡µ±Ç°Ê±¼ä

// 18:30:30

ĬÈÏÇé¿öÏ£¬LocalDate ºÍ LocalTime ÀàʹÓÃĬÈÏÊ±ÇøµÄϵͳʱÖÓ¡£ÕâЩÀ໹ÌṩÁËͨ¹ýÖØÔØ new() ·½·¨¶ÔÐÞ¸ÄÊ±ÇøµÄÖ§³Ö¡£¿ÉÒÔͨ¹ý´«µÝ zoneid À´»ñµÃÒ»¸öÌØ¶¨Ê±ÇøÖеÄÈÕÆÚ¡£

Àý×Ó£º

// µ±Ç°±¾µØÈÕÆÚ¼Ó¶û¸÷´ð£¨Ó¡¶È£©

´ËÍ⣬»¹ÓÐÒ»¸öÀ࣬LocalDateTime ×éºÏÁËÈÕÆÚºÍʱ¼ä£¬Ä¬ÈϸñʽΪ yyyy-MM-ddTHH:MM:ss.zzz¡¤¡£

//µ±Ç°ÈÕÆÚºÍʱ¼ä

// 2016-04-01 13:30

ZonedDateTime

ÕâÊÇÒ»¸ö²»¿É±äµÄÀ࣬ÓÃÓÚ±íʾ°üÀ¨Ê±ÇøÐÅÏ¢µÄÈÕÆÚºÍʱ¼ä¡£ÎÒÃÇ¿ÉÒÔʹÓÃÕâ¸öÀàµÄÒ»¸öʵÀýÀ´±íÊ¾ÌØ¶¨Ê¼þ£¬ÈçÔÚÊÀ½çµÄijЩµØÇøÒ»¸ö»áÒé¡£

// µ±Ç°Ê±¼äʹÓÃϵͳµÄʱ¼äºÍĬÈÏÇøÓò

// µ±Ç°Ê±¼äʹÓÃÌØ¶¨Ê±ÇøµÄϵͳʱÖÓ

Spring 4 ÌṩÁËÒ»¸öת»»¿ò¼Ü£¬Ö§³Ö×öΪ Java 8 ÈÕÆÚºÍʱ¼ä API Ò»²¿·ÖµÄËùÓÐÀà¡£Spring 4 ¿ÉÒÔʹÓÃÒ»¸ö 2016-9-10 µÄ×Ö·û´®£¬²¢°ÑËüת»»³É Java 8 LocalDate µÄÒ»¸öʵÀý¡£Spring 4 »¹Ö§³Öͨ¹ý @DateTimeFormat ×¢½â¸ñʽ»¯ Java 8 Date-Time ×ֶΡ£@DateTimeFormat ÉùÃ÷Ò»¸ö×Ö¶ÎÓ¦¸Ã¸ñʽ»¯ÎªÈÕÆÚʱ¼ä¡£

ÖØ¸´×¢½â

ÔÚ Java 8 ֮ǰ£¬½«ÏàͬÀàÐ͵Ķà¸ö×¢Êͼӵ½ÉùÃ÷»òÀàÐÍ£¨ÀýÈçÒ»¸öÀà»ò·½·¨£©ÖÐÊDz»ÔÊÐíµÄ¡£×÷ΪһÖÖ±äͨ·½·¨£¬¿ª·¢ÈËÔ±²»µÃ²»½«ËüÃÇ×éºÏÔÚÒ»Æð³ÉΪµ¥¸öÈÝÆ÷×¢½â¡£

Àý£º

ÖØ¸´×¢½âÔÊÐíÎÒÃÇÖØÐ´ÏàͬµÄ´úÂë²¢²»ÐèÏÔʽµØÊ¹ÓÃÈÝÆ÷×¢½â¡£ËäÈ»ÈÝÆ÷×¢½âûÓÐÔÚÕâÀïʹÓõģ¬Java ±àÒëÆ÷¸ºÔð½«Á½¸ö×¢½â·â×°³ÉÒ»¸öÈÝÆ÷£º

Àý£º

¶¨ÒåÖØ¸´×¢½â

¶¨ÒåÒ»¸öÖØ¸´×¢½â£¬Í¨¹ý¿ÉÖØ¸´Ê¹ÓÃµÄ @Repeatable ×¢½âÀ´½øÐбê×¢£¬»ò´´½¨Ò»¸ö¾ßÓÐÖØ¸´×¢½âÀàÐÍϵÁÐÊôÐÔµÄ×¢½â¡£

µÚ1²½£ºÉùÃ÷ÖØ¸´×¢½âÀàÐÍ£º

µÚ2²½£ºÉùÃ÷ÈÝÆ÷×¢½âÀàÐÍ¡£

È«²¿µÄʵÏÖÈçÏÂËùʾ£º

 

ΪÁË»ñµÃÔÚÔËÐÐʱµÄ×¢½âÐÅÏ¢£¬Í¨¹ý @Retention(RetentionPolicy.RUNTIME) ×¢Êͼ´¿É¡£

¼ìË÷×¢½â

getAnnotationsByType() »ò getDeclaredAnnotationsByType() ÊÇÓÃÓÚ·ÃÎÊ×¢½â·´Éä API ÖеÄз½·¨¡£

×¢½â»¹¿ÉÒÔͨ¹ýËüÃǵÄÈÝÆ÷×¢½âÓà getAnnotation() »ò getDeclaredAnnotation() ½øÐзÃÎÊ¡£

½áÂÛ

Spring 4 »¹¿ÉÔËÐÐÔÚ Java 6 ºÍ Java 7 ÖС£ÓÉÓÚ Spring ʹÓÃÁ˺ܶàµÄº¯Êýʽ½Ó¿Ú£¬Óà Java 8 ºÍ Spring 4£¬Ä㽫Äܹ»Ê¹Óà Lambda ±í´ïʽºÍº¯Êýʽ½Ó¿Ú£¬²¢¿Éд³ö¸ü¸É¾»¡¢½ô´ÕµÄ´úÂë¡£

Ð嵀 Date ºÍ Time API ½â¾öÁË java.Util.Date ÀàÖг¤ÆÚ´æÔÚµÄÎÊÌ⣬²¢ÒýÈëÁËÏñ LocalDate£¬LocalTime µÈÐí¶àÐÂÀ࣬ʹÈÕÆÚºÍʱ¼äµÄ±à³Ì±äµÃ¸üÓÐÒâ˼ÁË¡£ÄãÒѾ­²ÉÓà Java 8 + Spring 4 ÁËÂð£¿ÇëÔÚ Twitter ÉÏ @MyEclipseIDE »òÔÚMyEclipse ÂÛ̳¸úÎÒÃÇ·ÖÏíÄúµÄ·´À¡¡£

Ö÷Ì⣺º¯Êýʽ½Ó¿Ú£¬Lambda ±í´ïʽ£¬JAVA 8£¬JAVA£¬Spring 4

Ô­ÎÄÁ´½Ó£ºhttps://dzone.com/articles/java-8-features-supported-by-spring-4

 
   
2813 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

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¼°ÆäÇ°ÑØ¼¼Êõ