¸üÐÂʱ¼ä:2023Äê04ÔÂ13ÈÕ16ʱ11·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:

×Ô¶¯ÅäÖõĺËÐľÍÔÚ@SpringBootApplication×¢½âÉÏ£¬SpringBootApplicationÕâ¸ö×¢½âµ×²ã°üº¬ÁË3¸ö×¢½â£¬·Ö±ðÊÇ£º
- @SpringBootConfiguration
- @ComponentScan
- @EnableAutoConfiguration
- @EnableAutoConfigurationÕâ¸ö×¢½â²ÅÊÇ×Ô¶¯ÅäÖõĺËÐÄ¡£
- Ëü·â×°ÁËÒ»¸ö@Import×¢½â£¬Import×¢½âÀïÃæÖ¸¶¨ÁËÒ»¸öImportSelector½Ó¿ÚµÄʵÏÖÀà¡£
ÔÚÕâ¸öʵÏÖÀàÖУ¬ÖØÐ´ÁËImportSelector½Ó¿ÚÖеÄselectImports()·½·¨¡£¶øselectImports()·½·¨ÖлáÈ¥¶ÁÈ¡Á½·ÝÅäÖÃÎļþ£¬²¢½«ÅäÖÃÎļþÖж¨ÒåµÄÅäÖÃÀà×öΪselectImports()·½·¨µÄ·µ»ØÖµ·µ»Ø£¬·µ»ØÖµ´ú±íµÄ¾ÍÊÇÐèÒª½«ÄÄЩÀཻ¸øSpringµÄIOCÈÝÆ÷½øÐйÜÀí¡£
ÄÇôËùÓÐ×Ô¶¯ÅäÖÃÀàµÄÖÐÉùÃ÷µÄbean¶¼»á¼ÓÔØµ½SpringµÄIOCÈÝÆ÷ÖÐÂð? Æäʵ²¢²»»á£¬ÒòΪÕâЩÅäÖÃÀàÖÐÔÚÉùÃ÷beanʱ£¬Í¨³£¶¼»áÌí¼Ó@Conditional¿ªÍ·µÄ×¢½â£¬Õâ¸ö×¢½â¾ÍÊǽøÐÐÌõ¼þ×°Åä¡£¶øSpring»á¸ù¾ÝConditional×¢½âÓÐÑ¡ÔñÐԵĽøÐÐbeanµÄ´´½¨¡£
@Enable ¿ªÍ·µÄ×¢½âµ×²ã£¬Ëü¾Í·â×°ÁËÒ»¸ö×¢½â import ×¢½â£¬ËüÀïÃæÖ¸¶¨ÁËÒ»¸öÀ࣬ÊÇ ImportSelector ½Ó¿ÚµÄʵÏÖÀà¡£ÔÚʵÏÖÀ൱ÖУ¬ÎÒÃÇÐèҪȥʵÏÖ ImportSelector ½Ó¿Úµ±ÖеÄÒ»¸ö·½·¨ selectImports Õâ¸ö·½·¨¡£Õâ¸ö·½·¨µÄ·µ»ØÖµ´ú±íµÄ¾ÍÊÇÎÒÐèÒª½«ÄÄЩÀཻ¸ø spring µÄ IOCÈÝÆ÷½øÐйÜÀí¡£
´ËʱËü»áÈ¥¶ÁÈ¡Á½·ÝÅäÖÃÎļþ£¬Ò»·Ý¶ùÊÇ spring.factories£¬ÁíÍâÒ»·Ý¶ùÊÇ autoConfiguration.imports¡£¶øÔÚ autoConfiguration.imports Õâ·Ý¶ùÎļþµ±ÖУ¬Ëü¾Í»áÈ¥ÅäÖôóÁ¿µÄ×Ô¶¯ÅäÖõÄÀà¡£
ЩËùÓеÄ×Ô¶¯ÅäÖÃÀ൱ÖУ¬ËùÓÐµÄ bean¶¼»á¼ÓÔØµ½ spring µÄ IOC ÈÝÆ÷µ±ÖÐÂð?Æäʵ²¢²»»á£¬ÒòΪÕâЩÅäÖÃÀ൱ÖУ¬ÔÚÉùÃ÷ bean µÄʱºò£¬Í¨³£»á¼ÓÉÏÕâôһÀà@Conditional ¿ªÍ·µÄ×¢½â¡£Õâ¸ö×¢½â¾ÍÊǽøÐÐÌõ¼þ×°Åä¡£ËùÒÔSpringBoot·Ç³£µÄÖÇÄÜ£¬Ëü»á¸ù¾Ý @Conditional ×¢½âÀ´½øÐÐÌõ¼þ×°Åä¡£Ö»ÓÐÌõ¼þ³ÉÁ¢£¬Ëü²Å»áÉùÃ÷Õâ¸öbean£¬²Å»á½«Õâ¸ö bean ½»¸ø IOC ÈÝÆ÷¹ÜÀí¡£
×Ô¶¨Òåstarter·ÖÎö°¸Àý
ÏÂÃæÎÒÃǾÍͨ¹ýÒ»¸ö×Ô¶¨Òåstarter°¸ÀýÀ´¼ÓÉî´ó¼Ò¶ÔÓÚ×Ô¶¯ÅäÖÃÔÀíµÄÀí½â¡£Ê×ÏȽéÉÜÒ»ÏÂ×Ô¶¨ÒåstarterµÄÒµÎñ³¡¾°£¬ÔÙÀ´·ÖÎöһϾßÌåµÄ²Ù×÷²½Öè¡£
ËùνstarterÖ¸µÄ¾ÍÊÇSpringBootµ±ÖÐµÄÆð²½ÒÀÀµ¡£ÔÚSpringBootµ±ÖÐÒѾ¸øÎÒÃÇÌṩÁ˺ܶàµÄÆð²½ÒÀÀµÁË£¬ÎÒÃÇΪʲô»¹ÐèÒª×Ô¶¨Òå starter Æð²½ÒÀÀµ?ÕâÊÇÒòΪÔÚʵ¼ÊµÄÏîÄ¿¿ª·¢µ±ÖУ¬ÎÒÃÇ¿ÉÄÜ»áÓõ½ºÜ¶àµÚÈý·½µÄ¼¼Êõ£¬²¢²»ÊÇËùÓеĵÚÈý·½µÄ¼¼Êõ¹Ù·½¶¼¸øÎÒÃÇÌṩÁËÓëSpringBootÕûºÏµÄstarterÆð²½ÒÀÀµ£¬µ«ÊÇÕâЩ¼¼ÊõÓַdz£µÄͨÓã¬ÔںܶàÏîÄ¿×éµ±Öж¼ÔÚʹÓá£
ÒµÎñ³¡¾°£º
- ÎÒÃÇÇ°Ãæ°¸Àýµ±ÖÐËùʹÓõİ¢ÀïÔÆOSS¶ÔÏó´æ´¢·þÎñ£¬ÏÖÔÚ°¢ÀïÔÆµÄ¹Ù·½ÊÇûÓиøÎÒÃÇÌṩ¶ÔÓ¦µÄÆð²½ÒÀÀµµÄ£¬Õâ¸öʱºòʹÓÃÆðÀ´¾Í»á±È½Ï·±Ëö£¬ÎÒÃÇÐèÒªÒýÈë¶ÔÓ¦µÄÒÀÀµ¡£ÎÒÃÇ»¹ÐèÒªÔÚÅäÖÃÎļþµ±ÖнøÐÐÅäÖ㬻¹ÐèÒª»ùÓÚ¹Ù·½SDKʾÀýÀ´¸ÄÔì¶ÔÓ¦µÄ¹¤¾ßÀ࣬ÎÒÃÇÔÚÏîÄ¿µ±ÖвſÉÒÔ½øÐÐʹÓá£
- ´ó¼ÒÏëÔÚÎÒÃǵ±Ç°ÏîÄ¿µ±ÖÐʹÓÃÁ˰¢ÀïÔÆOSS£¬ÎÒÃÇÐèÒª½øÐÐÕâô¶à²½µÄ²Ù×÷¡£ÔÚ±ðµÄÏîÄ¿×éµ±ÖÐÒªÏëʹÓð¢ÀïÔÆOSS£¬ÊDz»ÊÇÒ²ÐèÒª½øÐÐÕâô¶à²½µÄ²Ù×÷£¬ËùÒÔÕâ¸öʱºòÎÒÃǾͿÉÒÔ×Ô¶¨ÒåһЩ¹«¹²×é¼þ£¬ÔÚÕâЩ¹«¹²×é¼þµ±ÖУ¬ÎҾͿÉÒÔÌáǰ°ÑÐèÒªÅäÖõÄbean¶¼ÌáǰÅäÖú᣽«À´ÔÚÏîÄ¿µ±ÖУ¬ÎÒÒªÏëʹÓÃÕâ¸ö¼¼Êõ£¬ÎÒÖ±½Ó½«×é¼þ¶ÔÓ¦µÄ×ø±êÖ±½ÓÒýÈë½øÀ´£¬¾ÍÒѾ×Ô¶¯ÅäÖúÃÁË£¬¾Í¿ÉÒÔÖ±½ÓʹÓÃÁË¡£ÎÒÃÇÒ²¿ÉÒ԰ѹ«¹²×é¼þÌṩ¸ø±ðµÄÏîÄ¿×é½øÐÐʹÓã¬ÕâÑù¾Í¿ÉÒÔ´ó´óµÄ¼ò»¯ÎÒÃǵĿª·¢¡£
ÔÚSpringBootÏîÄ¿ÖУ¬Ò»°ã¶¼»á½«ÕâЩ¹«¹²×é¼þ·âװΪSpringBootµ±ÖеÄstarter£¬Ò²¾ÍÊÇÎÒÃÇËù˵µÄÆð²½ÒÀÀµ¡£

SpringBoot¹Ù·½starterÃüÃû£º spring-boot-starter-xxxx
µÚÈý×éÖ¯ÌṩµÄstarterÃüÃû£º xxxx-spring-boot-starter

MybatisÌṩÁËÅäÖÃÀ࣬²¢ÇÒÒ²ÌṩÁËspringboot»á×Ô¶¯¶ÁÈ¡µÄÅäÖÃÎļþ¡£µ±SpringBootÏîÄ¿Æô¶¯Ê±£¬»á¶ÁÈ¡µ½spring.factoriesÅäÖÃÎļþÖеÄÅäÖÃÀಢ¼ÓÔØÅäÖÃÀ࣬Éú³ÉÏà¹Øbean¶ÔÏó×¢²áµ½IOCÈÝÆ÷ÖС£
½á¹û£ºÎÒÃÇ¿ÉÒÔÖ±½ÓÔÚSpringBoot³ÌÐòÖÐʹÓÃMybatis×Ô¶¯ÅäÖõÄbean¶ÔÏó¡£
ÔÚ×Ô¶¨ÒåÒ»¸öÆð²½ÒÀÀµstarterµÄʱºò£¬°´Õչ淶ÐèÒª¶¨ÒåÁ½¸öÄ£¿é£º
1. starterÄ£¿é(½øÐÐÒÀÀµ¹ÜÀí[°Ñ³ÌÐò¿ª·¢ËùÐèÒªµÄÒÀÀµ¶¼¶¨ÒåÔÚstarterÆð²½ÒÀÀµÖÐ])
2. autoconfigureÄ£¿é(×Ô¶¯ÅäÖÃ)
½«À´ÔÚÏîÄ¿µ±ÖнøÐÐÏà¹Ø¹¦ÄÜ¿ª·¢Ê±£¬Ö»ÐèÒªÒýÈëÒ»¸öÆð²½ÒÀÀµ¾Í¿ÉÒÔÁË£¬ÒòΪËü»á½«autoconfigure×Ô¶¯ÅäÖõÄÒÀÀµ¸ø´«µÝÏÂÀ´¡£
ÉÏÃæÎÒÃǼòµ¥½éÉÜÁË×Ô¶¨ÒåstarterµÄ³¡¾°£¬ÒÔ¼°×Ô¶¨ÒåstarterÊ±Éæ¼°µ½µÄÄ£¿éÖ®ºó£¬½ÓÏÂÀ´ÎÒÃǾÍÀ´Íê³ÉÒ»¸ö×Ô¶¨ÒåstarterµÄ°¸Àý¡£
ÐèÇó£º×Ô¶¨Òåaliyun-oss-spring-boot-starter£¬Íê³É°¢ÀïÔÆOSS²Ù×÷¹¤¾ßÀàAliyunOSSUtilsµÄ×Ô¶¯ÅäÖá£
Ä¿±ê£ºÒýÈëÆð²½ÒÀÀµÒýÈëÖ®ºó£¬ÒªÏëʹÓð¢ÀïÔÆOSS£¬×¢ÈëAliyunOSSUtilsÖ±½ÓʹÓü´¿É¡£
±±¾©Ð£Çø