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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
³õʶSpring¡ª¡ªSpringºËÐÄÈÝÆ÷
 
×÷Õߣº ÈýÇïYis
  1766  次浏览      27
 2019-11-21
 
±à¼­ÍƼö:
ÎÄÕÂÖ÷Òª½éÉÜÁËSpringµÄºËÐÄÈÝÆ÷ÒÔ¼°springÓëbeanµÄ¹ØÏµ£¬ÈÝÆ÷ÖÐBeanµÄÉúÃüÖÜÆÚ£¬×îºó¶ÔspringÖÐbeanÅäÖã¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ²©¿ÍÔ°£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

Ò». IOCºÍDI»ù´¡

IOC-Inversion of Control£¬ÒëΪ¿ØÖÆ·´×ª£¬ÊÇÒ»ÖÖ×ñÑ­ÒÀÀµµ¹ÖÃÔ­ÔòµÄ´úÂëÉè¼ÆË¼Ïë¡£

ËùνÒÀÀµµ¹Ö㬾ÍÊǰÑÔ­±¾µÄ¸ß²ã½¨ÖþÒÀÀµµ×²ã½¨Öþ¡°µ¹Öá±¹ýÀ´£¬±ä³Éµ×²ã½¨ÖþÒÀÀµ¸ß²ã½¨Öþ¡£¸ß²ã½¨Öþ¾ö¶¨ÐèҪʲô£¬µ×²ãȥʵÏÖÕâÑùµÄÐèÇ󣬵«ÊǸ߲㲢²»ÓùܵײãÊÇÔõôʵÏֵġ£ÕâÑù¾Í²»»á³öÏÖÇ°ÃæµÄ¡°Ç£Ò»·¢¶¯È«Éí¡±µÄÇé¿ö¡£

¶ø¿ØÖÆ·´×ª¾ÍÊǰѴ«Í³³ÌÐòÖÐÐèҪʵÏÖ¶ÔÏóµÄ´´½¨¡¢´úÂëµÄÒÀÀµ£¬·´×ª¸øÒ»¸öרÃŵÄ"µÚÈý·½"¼´ÈÝÆ÷À´ÊµÏÖ£¬¼´½«´´½¨ºÍ²éÕÒÒÀÀµ¶ÔÏóµÄ¿ØÖÆÈ¨½»¸øÈÝÆ÷£¬ÓÉÈÝÆ÷½«¶ÔÏó½øÐÐ×éºÏ×¢È룬ʵÏÖ¶ÔÏóÓë¶ÔÏóµÄËÉñîºÏ£¬±ãÓÚ¹¦Äܵĸ´Óã¬Ê¹³ÌÐòµÄÌåϵ½á¹¹¸üÁé»î¡£

DI-Dependency Injection,ÒëΪÒÀÀµ×¢È룬ʵ¼ÊÉÏÊǶÔIocµÄÁíÒ»Öֳƺô¡£2004Ä꣬´óʦ¼¶ÈËÎïMartin FowlerΪ¡°¿ØÖÆ·´×ª¡±È¡ÁËÒ»¸ö¸üºÏÊʵÄÃû×Ö¡°ÒÀÀµ×¢È롱¡£¸ø³öÁËʵÏÖIOCµÄ·½·¨£º×¢Èë¡£ËùνÒÀÀµ×¢È룬¾ÍÊÇÓÉIOCÈÝÆ÷ÔÚÔËÐÐÆÚ¼ä£¬¶¯Ì¬µØ½«Ä³ÖÖÒÀÀµ¹ØÏµ×¢Èëµ½¶ÔÏóÖ®ÖС£

Àí½âIOCºÍDIµÄ¹Ø¼ü£º

¿ØÖÆ·´×ª£¬Ë­¿ØÖÆÁËË­£¿--IOCÈÝÆ÷¿ØÖÆÁ˶ÔÏ󣻿ØÖÆÁËʲô£¿--¿ØÖÆÁËÍⲿ×ÊÔ´µÄ»ñÈ¡£¨¶ÔÏó£¬ÎļþµÈ£©£»ÄÄЩ·½ÃæµÄ¿ØÖƱ»·´×ªÁË£¿--»ñµÃÒÀÀµ¶ÔÏóµÄ¹ý³Ì±»·´×ªÁË¡£

ÒÀÀµ×¢È룬˭ÒÀÀµË­£¿--³ÌÐòÒÀÀµIOCÈÝÆ÷£»ÎªÊ²Ã´ÐèÒªÒÀÀµ£¿--³ÌÐòÐèÒªIOCÈÝÆ÷À´ÌṩÍⲿ×ÊÔ´£»Ë­×¢ÈëË­£¿--IOCÈÝÆ÷Ïò³ÌÐò×¢È룻עÈëÁËʲô£¿--×¢Èëij¸ö¶ÔÏóËùÐèÒªµÄÍⲿ×ÊÔ´¡£

ÒÀÀµ×¢Èë(DI)ºÍ¿ØÖÆ·´×ª(IOC)ÊÇ´Ó²»Í¬µÄ½Ç¶ÈµÄÃèÊöµÄͬһ¼þÊÂÇ飬¾ÍÊÇָͨ¹ýÒýÈëIOCÈÝÆ÷£¬ÀûÓÃÒÀÀµ¹ØÏµ×¢ÈëµÄ·½Ê½£¬ÊµÏÖ¶ÔÏóÖ®¼äµÄ½âñî¡£

¶þ. SpringÈÝÆ÷ÓëBean

1. springºËÐÄÈÝÆ÷¡¡¡¡

springµÄºËÐÄÈÝÆ÷°üÀ¨ÁË£ºBeans¡¢Core¡¢Context¡¢SpEL

¢Ù coreºÍbeansÄ£¿éÌṩÁËÕû¸ö¿ò¼Ü×î»ù´¡µÄ²¿·Ö£¬°üÀ¨ÁËIOCºÍDI¡£

¢Ú Context½¨Á¢ÔÚCoreºÍBeansÄ£¿éÌṩµÄ»ù´¡Ö®ÉÏ£ºËûÌṩÁË¿ò¼Üʽ·ÃÎʶÔÏóµÄ·½Ê½

¢Û core¡¢beans¡¢context¹¹³ÉÁËSpringµÄ¹Ç¼Ü

¢Ü SpEL:ÌṩÁËÒ»ÖÖÇ¿´óµÄÓÃÓÚÔÚÔËÐÐʱ²Ù×÷¶ÔÏóµÄ±í´ïʽÓïÑÔ

org.springframework.beans.factory.BeanFactoryÊÇSpringÈÝÆ÷µÄʵ¼Ê´ú±íÕߣ¬ÈÝÆ÷¸ºÔðÈÝÄÉ´ËǰËùÃèÊöµÄbean£¬²¢¶Ôbean½øÐйÜÀí¡£

2. springÓëbeanµÄ¹ØÏµ

SpringÈÝÆ÷ÊÇSpringµÄºËÐÄ£¬Ò»ÇÐSpringBean¶¼´æ´¢ÔÚSpringÈÝÆ÷ÄÚ¡£¿ÉÒÔ˵beanÊÇspringºËÐÄÖеĺËÐÄ¡£BeanÅäÖÃÐÅÏ¢¶¨ÒåÁËBeanµÄʵÏÖ¼°ÒÀÀµ¹ØÏµ£¬SpringÈÝÆ÷¸ù¾Ý¸÷ÖÖÐÎʽµÄBeanÅäÖÃÐÅÏ¢À´´´½¨BeanʵÀý£¬²¢µ÷ÓÃBeanʵÀýµÄ·½·¨À´Íê³É¡°ÒÀÀµ×¢È롱£¬¿ÉÒÔ°ÑSpringÈÝÆ÷Àí½â³ÉÒ»¸ö´óÐ͹¤³§£¬Bean¾ÍÊǸù¤³§µÄ²úÆ·£¬¹¤³§(SpirngÈÝÆ÷)ÀïÄÜÉú²ú³öÀ´Ê²Ã´ÑùµÄ²úÆ·£¨Bean£©£¬Íêȫȡ¾öÓÚÅäÖÃÎļþÖеÄÅäÖ᣶øÕâ¸öÅäÖÃÊÇÓÉ¿ª·¢ÈËÔ±´´½¨ºÍά»¤µÄ¡£

3. BeanµÄ×÷ÓÃÓò¡¡

springµÄ×÷ÓÃÓòÓÐsingleton,prototype,request,session,globle session¡£

ÕâÀïÖ»ÌÖÂÛ³£ÓõÄsingletonºÍprototypeÁ½ÖÖ×÷ÓÃÓò

¶ÔÓÚsingleton×÷ÓÃÓò£¬Ã¿´ÎÇëÇóͬidµÄBean¶¼½«»ñµÃÏàͬµÄʵÀý£¬springÈÝÆ÷¸ºÔð¸ú×ÙBeanʵÀý״̬£¬¸ºÔðά»¤BeanʵÀýµÄÉúÃüÖÜÆÚ¡£

¶ÔÓÚprototype×÷ÓÃÓò£¬³ÌÐòÿ´ÎÇëÇóͬidµÄBean»á»ñµÃеÄʵÀý£¬springÈÝÆ÷Ö»¸ºÔð´´½¨£¬Ò»µ©´´½¨³É¹¦¾ÍÈöÊÖ²»¹Ü£¬²»ÔÙ¹ÜÀíBeanʵÀýµÄÉúÃüÖÜÆÚ£¬Ò²²»»áά»¤BeanʵÀýµÄ״̬¡£

4. ÈÝÆ÷ÖÐBeanµÄÉúÃüÖÜÆÚ¡¡

Spring¿ÉÒÔ¹ÜÀísingleton×÷ÓÃÓòBeanµÄÉúÃüÖÜÆÚ£¬Spring¿ÉÒÔ¾«È·µØÖªµÀsingletonÓòbeanºÎʱ±»´´½¨£¬ºÎʱ³õʼ»¯Íê³É£¬ÒÔ¼°ÈÝÆ÷ºÎʱ׼±¸Ïú»ÙBeanʵÀý¡£¶ÔÓÚsingleton×÷ÓÃÓòµÄBean£¬¹ÜÀíBeanµÄÉúÃüÖÜÆÚÐÐΪÖ÷ÒªÓÐÁ½¸öʱ»ú£º×¢ÈëÒÀÀµ¹ØÏµºó£¬Ïú»ÙʵÀý֮ǰ£»¾ßÌåµÄ¹ÜÀí·½·¨ÈçÏ£º

SpringÌṩÁ½ÖÖ·½Ê½ÔÚBeanÈ«²¿ÊôÐÔÉèÖóɹ¦ºóÖ´ÐÐÌØ¶¨ÐÐΪ

ʹÓÃinit-method ÊôÐÔ£¨´úÂëÎÛȾС£©

ÔÚÀàÖбàдһ¸ö·½·¨£¬ÔÚÊôÐÔÖÐÖ¸¶¨¸Ã·½·¨ÔÚÒÀÀµ¹ØÏµÉèÖÃÍê³Éºó×Ô¶¯Ö´ÐС£

ʵÏÖInitializingBean½Ó¿Ú£¨ñîºÏ½Ï¸ß£©

±àдafterPropertiesSet()·½·¨µÄ¾ßÌåʵÏÖ

ͬÀí£¬ÈôÔÚBeanÏú»Ù֮ǰ£¬Ö´ÐÐÌØ¶¨µÄ·½·¨£¬Ö»ÐèҪʹÓà destroy-methodÊôÐÔ»òʵÏÖDisposableBean½Ó¿Ú£¨ÊµÏÖdestroy()·½·¨£©

¶ÔÓÚprototype×÷ÓÃÓòµÄBean£¬SpringÈÝÆ÷Ö»¸ºÔðBeanµÄ´´½¨£¬µ±ÈÝÆ÷´´½¨ÊµÀýÍê³Éºó£¬Bean½«ÍêÈ«½»¸ø¿Í»§¶Ë´úÂë¹ÜÀí£¬ÈÝÆ÷²»ÔÙ¸ºÔðÆäÉúÃüÖÜÆÚ£¬SpringÈÝÆ÷±¾ÉíÒ²²»ÖªµÀ×Ô¼º´´½¨Á˶àÉÙ¸öʵÀý£¬¸üÎÞ´ÓÖªµÀÕâЩʵÀýʲôʱºò²Å»á±»Ïú»Ù¡£

5. Bean±êÇ©ÊôÐÔ¡¡¡¡

¢Ù idÊôÐÔ£ºBeanµÄÃû³ÆÔÚIOCÈÝÆ÷ÖбØÐëÊÇΨһµÄ¡£

¢Ú classÊôÐÔ£ºÖ¸¶¨Bean¶ÔӦʵÏÖÀàµÄÈ«ÀàÃû£¬¼´°üÃû¼ÓÀàÃû£¬±ØÐëÓÐÎ޲ι¹Ôì¡£

¢Û scopeÊôÐÔ: Ç°ÃæÌáµ½¹ýµÄ×÷ÓÃÓòÊôÐÔ£¬²»Ö¸¶¨Ä¬ÈÏΪsingleton£¬¼´µ¥ÊµÀýģʽ¡£

¢Ü nameÊôÐÔ£ºÉèÖÃ<bean>±êÇ©µÄ±ðÃû£¬¶à¸ö±ðÃûÖ®¼äÓöººÅ»ò¿Õ¸ñ·Ö¿ª¡£

¢Ý parentÊôÐÔ£º×ÓÀàBean¶¨ÒåËüËùÒýÓÃËüµÄ¸¸ÀàBean¡£×ÓÀàBean¶¨ÒåËüËùÒýÓÃËüµÄ¸¸ÀàBean¡£ÕâÊ±Ç°ÃæµÄclassÊôÐÔʧЧ¡£×ÓÀàBean»á¼Ì³Ð¸¸ÀàBeanµÄËùÓÐÊôÐÔ£¬×ÓÀàBeanÒ²¿ÉÒÔ¸²¸Ç¸¸ÀàBeanµÄÊôÐÔ¡£×¢Ò⣺×ÓÀàBeanºÍ¸¸ÀàBeanÊÇͬһ¸öJavaÀà¡£

¢Þ abstractÊôÐÔ£ºÓÃÀ´¶¨ÒåBeanÊÇ·ñΪ³éÏóBean¡£Ëü±íʾÕâ¸öBean½«²»»á±»ÊµÀý»¯£¬Ò»°ãÓÃÓÚ¸¸ÀàBean£¬ÒòΪ¸¸ÀàBeanÖ÷ÒªÊǹ©×ÓÀàBean¼Ì³ÐʹÓá£

¢ß singletonÊôÐÔ£º×÷ÓÃͬ¢Û£¬Ä¬ÈÏΪtrue

¢à lazy-initÊôÐÔ£ºÓÃÀ´¶¨ÒåÕâ¸öBeanÊÇ·ñʵÏÖÀÁ³õʼ»¯¡£Èç¹ûΪ¡°true¡±£¬Ëü½«ÔÚBeanFactoryÆô¶¯Ê±³õʼ»¯ËùÓеÄSingletonBean¡£·´Ö®£¬Èç¹ûΪ¡°false¡±,ËüÖ»ÔÚBeanÇëÇóʱ²Å¿ªÊ¼´´½¨SingletonBean¡£

¢á autowireÊôÐÔ£ºËü¶¨ÒåÁËBeanµÄ×Ô¶¯×°ÔØ·½Ê½¡£¡°no¡±:²»Ê¹ÓÃ×Ô¶¯×°Å书ÄÜ¡£¡°byName¡±:ͨ¹ýBeanµÄÊôÐÔÃûʵÏÖ×Ô¶¯×°Åä¡£¡°byType¡±:ͨ¹ýBeanµÄÀàÐÍʵÏÖ×Ô¶¯×°Åä¡£¡°constructor¡±:ÀàËÆÓÚbyType£¬µ«ËüÊÇÓÃÓÚ¹¹Ô캯ÊýµÄ²ÎÊýµÄ×Ô¶¯×é×°¡£¡°autodetect¡±:ͨ¹ýBeanÀàµÄ·´Ê¡»úÖÆ£¨introspection£©¾ö¶¨ÊÇʹÓá°constructor¡±

¢â dependency-checkÊôÐÔ£ºËüÓÃÀ´È·±£Bean×é¼þͨ¹ýJavaBeanÃèÊöµÄËùÒÔÒÀÀµ¹ØÏµ¶¼µÃµ½Âú×ã¡£ÔÚÓë×Ô¶¯×°Å书ÄÜÒ»ÆðʹÓÃʱ£¬ËüÌØ±ðÓÐÓá£none£º²»½øÐÐÒÀÀµ¼ì²éobjects£ºÖ»×ö¶ÔÏó¼äÒÀÀµµÄ¼ì²é¡£simple£ºÖ»×öԭʼÀàÐͺÍStringÀàÐÍÒÀÀµµÄ¼ì²é¡£all£º¶ÔËùÓÐÀàÐ͵ÄÒÀÀµ½øÐмì²é¡£Ëü°üÀ¨ÁËÇ°ÃæµÄobjectsºÍsimple¡£

depends-onÊôÐÔ£ºÕâ¸öBeanÔÚ³õʼ»¯Ê±ÒÀÀµµÄ¶ÔÏó£¬Õâ¸ö¶ÔÏó»áÔÚÕâ¸öBean³õʼ»¯Ö®Ç°´´½¨¡£

init-methodÊôÐÔ£ºÓÃÀ´¶¨ÒåBeanµÄ³õʼ»¯·½·¨£¬Ëü»áÔÚBean×é×°Ö®ºóµ÷Óá£Ëü±ØÐëÊÇÒ»¸öÎÞ²ÎÊýµÄ·½·¨¡£

destroy-methodÊôÐÔ£ºÓÃÀ´¶¨ÒåBeanµÄÏú»Ù·½·¨£¬ËüÔÚBeanFactory¹Ø±Õʱµ÷Óá£Í¬Ñù£¬ËüÒ²±ØÐëÊÇÒ»¸öÎÞ²ÎÊýµÄ·½·¨¡£ËüÖ»ÄÜÓ¦ÓÃÓÚsingletonBean¡£

factory-methodÊôÐÔ£º¶¨Òå´´½¨¸ÃBean¶ÔÏóµÄ¹¤³§·½·¨¡£ËüÓÃÓÚÏÂÃæµÄ¡°factory-bean¡±£¬±íʾÕâ¸öBeanÊÇͨ¹ý¹¤³§·½·¨´´½¨¡£´Ëʱ£¬¡°class¡±ÊôÐÔʧЧ¡£

factory-beanÊôÐÔ£º¶¨Òå´´½¨¸ÃBean¶ÔÏóµÄ¹¤³§Àà¡£Èç¹ûʹÓÃÁË¡°factory-bean¡±Ôò¡°class¡±ÊôÐÔʧЧ¡£

Èý. springÖÐbeanÅäÖÃ

beanÅäÖÃÓÐÈýÖÖ·½·¨£º

1¡¢ÅäÖÃÐÎʽ£º

¢Ù»ùÓÚxmlÎļþ ¢Ú»ùÓÚ×¢½â ¢Û»ùÓÚjavaÀà

2¡¢ÅäÖ÷½Ê½£º

¢Ùͨ¹ýÈ«ÀàÃû(·´Éä)

¢Úͨ¹ý¹¤³§·½·¨(¾²Ì¬¹¤³§·½·¨¡¢ÊµÀý¹¤³§·½·¨)

¢ÛFactoryBean

3¡¢ÒÀÀµ×¢È뷽ʽ£º

¢ÙÊôÐÔ×¢Èë ¢Ú¹¹ÔìÆ÷×¢Èë

1. »ùÓÚxml È«ÀàÃû ÊôÐÔ×¢Èë

<bean id="helloWorld" class="top.arioso.spring.beans.HelloWorld">
<property name="id">
<value>123456</value>
</property>
<property name="age" value="18"></property>
</bean>

property½Úµã£ºÎªBeanÊôÐÔ¸³Öµ£¬nameΪÊôÐÔÃû£¬value¶ÔÓ¦ÊôÐÔÖµ£¬
ÊôÐÔÖµÒªÓÐsetter·½·¨
valueÊôÐÔ¿ÉÓÃ×Ó½ÚµãvalueÌæ´ú

2. »ùÓÚxml È«ÀàÃû ¹¹Ôì×¢Èë

<bean id="person" class="top.arioso.spring.beans.Person">
<constructor-arg type="java.lang.String">
<value>John</value>
</constructor-arg>
<constructor-arg value="America" index="3"><constructor>
<constructor-arg value="123456" type="int"><constructor>
<constructor-arg value="man" typ><constructor>
<property name="id">
<value>123456</value>
</property>
<property name="age" value="18"></property>
</bean>
ÒªÇó±ØÐëÓдø²Î¹¹Ôì
¸ù¾ÝvalueֵƥÅä¹¹ÔìÆ÷£¬Æ¥Åä²»µ½¾ÍÆ¥ÅäÏÂÒ»¸ö
¿ÉÒÔÓÃindexÊôÐÔÖ¸¶¨´ø²Î¹¹ÔìÆ÷µÚ¼¸¸ö²ÎÊý
¿ÉÒÔÓÃtypeÊôÐÔÖ¸¶¨¹¹Ô캯Êý²ÎÊýÀàÐÍµÄÆ¥Åä
valueÊôÐÔ¿ÉÓÃ×Ó½ÚµãvalueÌæ´ú

3. »ùÓÚxml ͨ¹ý¹¤³§ÅäÖÃ

(1) ¾²Ì¬¹¤³§·½·¨ÅäÖÃ

<bean id="car" class="top.arioso.spring.factory.staticCarFactory" factory-method="getCar">
<constructor-arg value="BMW"></constructor-arg>
</bean>
class£º¹¤³§·½·¨È«ÀàÃû
factory-method£ºÒªµ÷Óù¤³§·½·¨Ãû
ÈôÐèÒª´«µÝ²ÎÊý£¬Ê¹ÓÃconstructor-arg´«Öµ

(2)ʵÀý¹¤³§·½·¨ÅäÖÃ

<bean id="carFactory" class="top.arioso.spring.beans.carFactory"></bean>
<bean id="car" factory-bean="carFactory" factory-method=
"getCar">
<constructor-arg value="BMW"></constructor-arg>
</bean>
carFactory£º¹¤³§µÄʵÀý
factory-bean: Ö¸Ïò¹¤³§µÄʵÀý
factory-method£ºÒªµ÷Óù¤³§·½·¨Ãû
ÈôÐèÒª´«µÝ²ÎÊý£¬Ê¹ÓÃconstructor-arg´«Öµ

(3)ͨ¹ýFactoryBeanÅäÖÃ

spring¿ò¼Ü×ÔÉíÌṩµÄ£¬ËüÐèҪʵÏÖFactoryBean½Ó¿Ú£¬ÊµÏÖ´úÂë¾Í±ØÐëдÔÚgetObject()·½·¨ÖС£

//java´úÂë
public class SpringFactory implements FactoryBean
<Calendar>{
public SpringFactory() {
System.out.println("ÎÒÊÇÒ»¸öspring¹¤³§Àà");
}
public Calendar getObject() throws Exception {
return Calendar.getInstance();
}
public Class<?> getObjectType() {
return Calendar.class;
}
public boolean isSingleton() {
return false;
}
//ÅäÖÃÎļþ
<bean id="cal" class="springfactory.SpringFactory"/>
¸ÃÅäÖ÷µ»ØµÄʵÀýÊÇSpringFactoryµÄgetObject·½·¨·µ»ØµÄʵÀý¡£

4. springÅäÖÃBean×¢Èë

¢Ù ÅäÖÃ×ÖÃæÖµ

¿Éͨ¹ývalueÊôÐÔ»ò<value>±êÇ©ÊôÐÔ×¢È룬

Èô×ÖÃæÖµ°üº¬ÌØÊâ×Ö·û£¬Ê¹ÓÃ<![CDATA[]]>°ü¹ü

spring½«ÊôÐԵĿղÎÊýµ±¿ÕString,ÏÂÃæ¸øemailÊôÐÔÉèÖÃÁ˿յÄStringÖµ("")

<bean id="nullBean" class="top.arioso.spring.NullBean">
<property name="email" value="" />
</bean>
Èç¹ûҪעÈënullÖµ,¿ÉÒÔʹÓÃ<null />
<bean id="exampleBean" class="top.arioso.spring.NullBean">
<property name="email">
<null />
</property>
</bean>

¢Ú BeanÖ®¼äµÄÒýÓÃ

<bean id="dog" class="top.arioso.hello.Dog"/>
<bean id="user" class="top.arioso.hello.User">
<property name="name" value="tony"/>
<property name="dog" ref="dog"></property>
</bean>

¢Û ListÊôÐÔ£¨setͬÀí£©

<bean id="user" class="top.arioso.hello.User">
<property name="list">
<list>
<value>±±¾©</value>
<value>ÉϺ£</value>
<value>¹ãÖÝ</value>
<ref bean="dog"/>
</list>
</property>
</bean>

¢Ü mapÊôÐÔ

<bean id="user" class="top.arioso.hello.User">
<property name="map">
<map>
<entry key="bj" value="±±¾©"/>
<entry key="sh" value="ÉϺ£"/>
</map>
</property>
</bean>

¢Ý PropertiesÊôÐÔ

<bean id="user" class="top.arioso.hello.User">
<property name="dbParams">
<props>
<prop key="username">root</prop>
<prop key="password">root</prop>
</props>
</property>
</bean>

¢Þ ¶ÀÁ¢µÄ¼¯ºÏBean

<util:list id="computerList">
<ref bean="computer"/>
<bean class="top.arioso.spring.collection.ComputerList">
<constructor-arg value="hp"></constructor-arg>
<constructor-arg value="dell"></constructor-arg>
<constructor-arg value="acer"></constructor-arg>
</bean>
</util:list>
<bean id="User" class="top.arioso.spring.User">
<property name="id" value="2018310"></property>
<property name="name" value="Tom"></property>
<property name="computers" value="computerList"></property>
</bean>

¢ß ʹÓÃpÃüÃû¿Õ¼ä

<bean id="computer" class="top.arioso.spring.Computer">
<p:brand="dell" p-cpu="i7-7700" p-price="7900">
</bean>
Ê×ÏÈÐèÒªµ¼ÈëÃüÃû¿Õ¼ä

Ê×ÏÈÐèÒªµ¼ÈëÃüÃû¿Õ¼ä

5. »ùÓÚ×¢½âÅäÖÃBean

¢Ù ×¢½âÒÀÀµaop°ü£¬Òªµ¼Èëaop°ü¡£

¢Ú Spring Äܹ»´Ó classpath ÏÂ×Ô¶¯É¨Ãè(ÐèÒªÅäÖà context:component-scan )¾ßÓÐÌØ¶¨×¢½âµÄ×é¼þ¡£

ÌØ¶¨µÄ×é¼þ°üÀ¨£º

@Component£º»ù±¾×¢½â£¬±êʶһ¸öÊÜSpring¹ÜÀíµÄ×é¼þ¡£

@Repository£º±êʶ³Ö¾Ã²ã×é¼þ¡£

@Service£º±êʶҵÎñ²ã×é¼þ¡£

@Controller£º±êʶ¿ØÖƲã×é¼þ¡£

Spring ¶ÔɨÃèµ½µÄ×é¼þÓÐĬÈϵÄÃüÃû¹æÔò£ºÊ¹Ó÷ÇÏÞ¶¨ÀàÃû£¬µÚÒ»¸ö×ÖĸСд (Ò²¿ÉÒÔʹÓÃvalueÊôÐÔÖ¸¶¨×é¼þµÄÃû³Æ)¡£

¢Û ÅäÖÃ<context:component-scan>

<context:component-scan
base-package="top.arioso.spring.annotation"
resource-pattern="service/*.class">
</context:component-scan>
base-package ÊôÐÔÖ¸¶¨SpringɨÃèµÄ°ü£¬Spring½«É¨Ãè
¸Ã°ü¼°ÆäËùÓÐ×Ó°ü£¬ÈçÓжà¸ö°ü£¬Ê¹ÓöººÅ¸ô¿ª¡£
¿ÉÒÔʹÓà resource-pattern À´¹ýÂËÌØ¶¨µÄÀà¡£

<context:exclude-filter>:Ö¸¶¨É¨ÃèÅųýÄÄЩÀà
ÐèÉèÖÃuse-default-filterΪfalse
//ֻɨÃèÓÐService×¢½âµÄÀà
<context:component-scan resource-pattern="controller/*.class"
base-package="top.arioso.spring.annotation"
use-default-filters="false">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service">
</context:component-scan>

//ÅųýɨÃèʵÏÖÁËUserRepositoryµÄÀà
<context:component-scan resource-pattern="controller/*.class"
base-package="top.arioso.spring.annotation"
use-default-filters="false">
<context:exclude-filter type="assignable" expression="top.arioso.repository.UserRepository">
</context:component-scan>

<context:include-filter>:Ö¸¶¨É¨Ãè°üº¬ÄÄЩÀà
//ÅųýɨÃèÓÐService×¢½âµÄÀà
<context:component-scan resource-pattern="controller/*.class"
base-package="top.arioso.spring.annotation"
<context:include-filter type="annotation" expression="org.springframework.stereotype.Service">
</context:component-scan>

//ֻɨÃèʵÏÖÁËUserRepositoryµÄÀà
<context:component-scan resource-pattern="controller/*.class"
base-package="top.arioso.spring.annotation"
<context:include-filter type="assignable" expression="top.arioso.repository.UserRepository">
</context:component-scan>

6. ʹÓÃ×¢½â×Ô¶¯×°ÅäBean

¢ÙAutowired×Ô¶¯×¢Èë

@Autowired¿ÉÒÔÔÚ×ֶΡ¢setter·½·¨¡¢¹¹ÔìÆ÷ÉÏÃæÊ¹ÓÃ

ĬÈÏÇé¿öÏÂ,µ±Ê¹Óà @Autowired ×¢½âµÄÊôÐÔ£¬Èç¹ûÔÚIOCÈÝÆ÷ÖÐÕÒ²»µ½Æ¥ÅäµÄBeanÀ´×°ÅäÊôÐÔʱ£¬»áÅ׳öÒì³£¡£¿ÉÒÔʹÓÃrequired=false ÉèÖÃijһÊôÐÔ²»±»ÉèÖÃ(¼´IOCÈÝÆ÷²»ÅäÖÃÆ¥ÅäµÄBean)¡£

ʹÓÃ@Autowired×¢½âµÄÊôÐÔ£¬µ± IOC ÈÝÆ÷ÖдæÔÚ¶à¸öÀàÐÍÆ¥ÅäµÄ Bean ʱ£¬Ä¬ÈÏÇé¿öÏÂ»áÆ¥ÅäÓëÊôÐÔÏàͬÃû³ÆµÄ Bean£¬ÈôÆ¥Åä²»µ½ÔòÅ׳öÒì³£¡£Ò²¿ÉÒÔʹÓà @Qualifier(¡°BeanÃû³Æ¡±) ×¢½âÖ¸¶¨×¢ÈëµÄBean¡£

@AutowiredÒ²¿ÉÒÔÓÃÔÚÊý×éÉÏ£¬Spring»á½«ËùÓÐÆ¥ÅäµÄBean×Ô¶¯×°Åä½øÊý×é¡£

@AutowiredÒ²¿ÉÒÔÓÃÔÚ¼¯ºÏÉÏ£¬Spring»áÅжϸü¯ºÏµÄÀàÐÍ,È»ºó×Ô¶¯×°ÅäËùÓÐÀàÐͼæÈݵÄBean¡£

@AutowiredÒ²¿ÉÒÔÓÃÔÚMapÉÏ£¬ÈôkeyΪStringÀàÐÍ£¬Spring½«BeanµÄÃû³Æ×÷Ϊkey£¬Bean±¾Éí×÷Ϊֵ×Ô¶¯×°ÅäËùÓÐÀàÐͼæÈݵĵÄBean¡£

Ò²¿ÉÒÔʹÓà @Resource »ò @Inject ×Ô¶¯×°ÅäBean£¬¹¦ÄÜÓë @Autowired ÀàËÆ£¬Ò»°ãʹÓÃ@ResourceºÍ@Autowired£¬²»ÍƼö@Inject¡£

¢ÚResource×Ô¶¯×°Åä¡¡¡¡

@ResourceÓë@Autowired×÷ÓÃÀàËÆ£¬Ö»²»¹ý@Autowired°´ByType×Ô¶¯×¢È룬Resource°´ByName×Ô¶¯×¢È룻

@Resource×°Åä˳Ðò

Èç¹ûͬʱָ¶¨ÁËnameºÍtype£¬Ôò´ÓSpringÉÏÏÂÎÄÖÐÕÒµ½Î¨Ò»Æ¥ÅäµÄbean½øÐÐ×°Å䣬ÕÒ²»µ½ÔòÅ׳öÒì³£

Èç¹ûÖ¸¶¨ÁËname£¬Ôò´ÓÉÏÏÂÎÄÖвéÕÒÃû³Æ£¨id£©Æ¥ÅäµÄbean½øÐÐ×°Å䣬ÕÒ²»µ½ÔòÅ׳öÒì³£

Èç¹ûÖ¸¶¨ÁËtype£¬Ôò´ÓÉÏÏÂÎÄÖÐÕÒµ½ÀàÐÍÆ¥ÅäµÄΨһbean½øÐÐ×°Å䣬ÕÒ²»µ½»òÕßÕÒµ½¶à¸ö£¬¶¼»áÅ׳öÒì³£

Èç¹û¼ÈûÓÐÖ¸¶¨name£¬ÓÖûÓÐÖ¸¶¨type£¬Ôò×Ô¶¯°´ÕÕbyName·½Ê½½øÐÐ×°Å䣻Èç¹ûûÓÐÆ¥Å䣬Ôò»ØÍËΪһ¸öԭʼÀàÐͽøÐÐÆ¥Å䣬Èç¹ûÆ¥ÅäÔò×Ô¶¯×°Åä¡£

¢Û@Qualifier×¢½â

QualifierÒëΪºÏ¸ñÕߣ¬Ò»°ãÓëAutowiredÅäºÏʹÓ㬵±Óжà¸öÀàʵÏÖÒ»¸ö½è¿Ú£¬spring²»ÖªµÀ°ó¶¨ÄĸöʵÏÖÀ࣬¿ÉÒÔÓÃQualifier(BeanÃû³Æ»ò×¢½âÃû) ÅäºÏ@AutowiredʹÓÃ

¢Ü@AutowiredÓë@ResourceµÄÇø±ð

@ResourceÊÇËùÊôÓÚJ2EEµÄ£¬¶ø@AutowiredÊÇËùÊôÓÚSpringµÄ£»

@AutowiredÊÇĬÈϰ´ÀàÐÍ(ByType)×°ÅäµÄ,ĬÈÏÒªÒÀÀµµÄ¶ÔÏó±ØÐë´æÔÚ£¬·ñÔòÅ׳öÒì³££¬Èç¹ûÔÊÐíΪnullÖµ£¬¿ÉÒÔÉèÖÃ@Autowired(required=false)£¬@ResourceÊÇĬÈϰ´Ãû³Æ(ByName)×°ÅäµÄ£¬Èç¹û²»Ö¸¶¨name£¬Ôò°Ñ×Ö¶ÎÃûµ±×öÃû³ÆÑ°ÕÒ£¬ÕÒ²»µ½Óë¸ÃÃû³ÆÆ¥ÅäµÄBeanʱ²Å»á°´ÀàÐÍѰÕÒ¡£µ«ÊÇÒ»µ©Ö¸¶¨name£¬¾Í»á°´Ãû³ÆÑ°ÕÒ£¬ÕÒ²»µ½Å׳öÒì³£¡£

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

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

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

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö