ÀÖÓãµç¾º


½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

Spring BeanµÄÉúÃüÖÜÆÚ·ÖΪ¼¸¸ö½×¶Î£¿¡¾Java¸ßÆµÃæÊÔÌâ¡¿

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

ºÃ¿Ú±®ITÅàѵ

Spring BeanµÄÉúÃüÖÜÆÚÊÇ´ÓBean ʵÀý»¯Ö®ºó£¬¼´Í¨¹ý·´Éä´´½¨³ö¶ÔÏóÖ®ºó£¬µ½Bean³ÉΪһ¸öÍêÕû¶ÔÏó£¬×îÖÕ´æ´¢µ½µ¥Àý³ØÖУ¬Õâ¸ö¹ý³Ì±»³ÆÎªSpring BeanµÄÉúÃüÖÜÆÚ¡£Spring BeanµÄÉúÃüÖÜÆÚ´óÌåÉÏ·ÖΪÈý¸ö½×¶Î£º

BeanµÄʵÀý»¯½×¶Î£ºSpring¿ò¼Ü»áÈ¡³öBeanDefinitionµÄÐÅÏ¢½øÐÐÅжϵ±Ç°BeanµÄ·¶Î§ÊÇ·ñÊÇsingletonµÄ£¬ÊÇ·ñ²»ÊÇÑÓ³Ù¼ÓÔØµÄ£¬ÊÇ·ñ²»ÊÇFactoryBeanµÈ£¬×îÖÕ½«Ò»¸öÆÕͨµÄsingletonµÄBeanͨ¹ý·´Éä½øÐÐʵÀý»¯;

BeanµÄ³õʼ»¯½×¶Î£ºBean´´½¨Ö®ºó»¹½ö½öÊǸö"°ë³ÉÆ·"£¬»¹ÐèÒª¶ÔBeanʵÀýµÄÊôÐÔ½øÐÐÌî³ä¡¢Ö´ÐÐһЩAware½Ó¿Ú·½·¨¡¢Ö´ÐÐBeanPostProcessor·½·¨¡¢Ö´ÐÐInitializingBean½Ó¿ÚµÄ³õʼ»¯·½·¨¡¢Ö´ÐÐ×Ô¶¨Òå³õʼ»¯init·½·¨µÈ¡£¸Ã½×¶ÎÊÇSpring×î¾ß¼¼Êõº¬Á¿ºÍ¸´ÔӶȵĽ׶Σ¬AopÔöÇ¿¹¦ÄÜ£¬ºóÃæÒªÑ§Ï°µÄSpringµÄ×¢½â¹¦ÄܵÈ¡¢spring¸ßÆµÃæÊÔÌâBeanµÄÑ­»·ÒýÓÃÎÊÌâ¶¼ÊÇÔÚÕâ¸ö½×¶ÎÌåÏÖµÄ;

BeanµÄÍê³É½×¶Î£º¾­¹ý³õʼ»¯½×¶Î£¬Bean¾Í³ÉΪÁËÒ»¸öÍêÕûµÄSpring Bean£¬±»´æ´¢µ½µ¥Àý³ØsingletonObjectsÖÐÈ¥ÁË£¬¼´Íê³ÉÁËSpring BeanµÄÕû¸öÉúÃüÖÜÆÚ¡£

ÓÉÓÚBeanµÄ³õʼ»¯½×¶ÎµÄ²½Öè±È½Ï¸´ÔÓ£¬ËùÒÔ×ÅÖØÑо¿BeanµÄ³õʼ»¯½×¶ÎSpring BeanµÄ³õʼ»¯¹ý³ÌÉæ¼°Èçϼ¸¸ö¹ý³Ì£º

? BeanʵÀýµÄÊôÐÔÌî³ä

? Aware½Ó¿ÚÊôÐÔ×¢Èë

? BeanPostProcessorµÄbefore()·½·¨»Øµ÷

? InitializingBean½Ó¿ÚµÄ³õʼ»¯·½·¨»Øµ÷

? ×Ô¶¨Òå³õʼ»¯·½·¨init»Øµ÷

? BeanPostProcessorµÄafter()·½·¨»Øµ÷

PS£ºÍ¨¹ý´úÂëÑéÖ¤ÉÏÊö³õʼ»¯Ë³Ðò… …

BeanʵÀýÊôÐÔÌî³ä

BeanDefinitionÖÐÓжԵ±Ç°BeanʵÌåµÄ×¢ÈëÐÅϢͨ¹ýÊôÐÔpropertyValues½øÐÐÁË´æ´¢£¬ÀýÈçUserServiceµÄÊôÐÔÐÅÏ¢ÈçÏÂ:

BeanʵÀýÊôÐÔÌî³ä

SpringÔÚ½øÐÐÊôÐÔ×¢Èëʱ£¬»á·ÖΪÈçϼ¸ÖÖÇé¿ö£º

×¢ÈëÆÕͨÊôÐÔ£¬String¡¢int»ò´æ´¢»ù±¾ÀàÐ͵ļ¯ºÏʱ£¬Ö±½Óͨ¹ýset·½·¨µÄ·´ÉäÉèÖýøÈ¥;

×¢Èëµ¥Ïò¶ÔÏóÒýÓÃÊôÐÔʱ£¬´ÓÈÝÆ÷ÖÐgetBean»ñÈ¡ºóͨ¹ýset·½·¨·´ÉäÉèÖýøÈ¥£¬Èç¹ûÈÝÆ÷ÖÐûÓУ¬ÔòÏÈ´´½¨±»×¢Èë¶ÔÏóBeanʵÀý(Íê³ÉÕû¸öÉúÃüÖÜÆÚ)ºó£¬ÔÚ½øÐÐ×¢Èë²Ù×÷;

×¢ÈëË«Ïò¶ÔÏóÒýÓÃÊôÐÔʱ£¬¾Í±È½Ï¸´ÔÓÁË£¬Éæ¼°ÁËÑ­»·ÒýÓÃ(Ñ­»·ÒÀÀµ)ÎÊÌ⣬ÏÂÃæ»áÏêϸ²ûÊö½â¾ö·½°¸¡£

PS£ºÍ¨¹ý´úÂëÑéÖ¤ÉÏÊöµÚ¶þµÚÈýÖÖÊôÐÔÌî³ä… …

¶à¸öʵÌåÖ®¼äÏ໥ÒÀÀµ²¢Ðγɱջ·µÄÇé¿ö¾Í½Ð×ö"Ñ­»·ÒÀÀµ"£¬Ò²½Ð×ö"Ñ­»·ÒýÓÃ"ÀýÈçÏÂͼ£¬beanAºÍbeanAµÄÒÀÀµ¹ØÏµ¡£

Ñ­»·ÒÀÀµ

public class UserServiceImpl implements UserService{
     public void setUserDao(UserDao userDao) {}
}
public class UserDaoImpl implements UserDao{
     public void setUserService(UserService userService){}
}
<bean id="userService" class="com.itheima.service.impl.UserServiceImpl">
     <property name="userDao" ref="userDao"/>
</bean>
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl">
     <property name="userService" ref="userService"/>
</bean>

´úÂëÑéÖ¤ºó£¬·ÖÎö³öUserServiceÓëUserDaoʵÀý»¯Óë³õʼ»¯µÄ˳ÐòÈçÏ£º

³õʼ»¯ÓëʵÀý»¯µÄ˳Ðò

SpringÌṩÁËÈý¼¶»º´æ´æ´¢ÍêÕûBeanʵÀýºÍ°ë³ÉÆ·BeanʵÀý£¬ÓÃÓÚ½â¾öÑ­»·ÒýÓÃÎÊÌâ¡£ ÔÚDefaultListableBeanFactoryµÄÉÏËﶏ¸ÀàDefaultSingletonBeanRegistryÖÐÌṩÈçÏÂÈý¸öMap£º

public class DefaultSingletonBeanRegistry ... {
    //1¡¢×îÖÕ´æ´¢µ¥ÀýBean³ÉÆ·µÄÈÝÆ÷£¬¼´ÊµÀý»¯ºÍ³õʼ»¯¶¼Íê³ÉµÄBean£¬³ÆÖ®Îª"Ò»¼¶»º´æ"
    Map<String, Object> singletonObjects = new ConcurrentHashMap(256);
    //2¡¢ÔçÆÚBeanµ¥Àý³Ø£¬»º´æ°ë³ÉÆ·¶ÔÏó£¬ÇÒµ±Ç°¶ÔÏóÒѾ­±»ÆäËû¶ÔÏóÒýÓÃÁË£¬³ÆÖ®Îª"¶þ¼¶»º´æ"
    Map<String, Object> earlySingletonObjects = new ConcurrentHashMap(16);
    //3¡¢µ¥ÀýBeanµÄ¹¤³§³Ø£¬»º´æ°ë³ÉÆ·¶ÔÏ󣬶ÔÏóδ±»ÒýÓã¬Ê¹ÓÃʱÔÚͨ¹ý¹¤³§´´½¨Bean£¬³ÆÖ®Îª"Èý¼¶»º´æ"
    Map<String, ObjectFactory<?>> singletonFactories = new HashMap(16);
}

UserServiceºÍUserDaoÑ­»·ÒÀÀµµÄ¹ý³Ì½áºÏÉÏÊöÈý¼¶»º´æÃèÊö£º

UserServiceʵÀý»¯¶ÔÏ󣬵«ÉÐδ³õʼ»¯£¬½«UserService´æ´¢µ½Èý¼¶»º´æ;

UserServiceÊôÐÔ×¢È룬ÐèÒªUserDao£¬´Ó»º´æÖлñÈ¡£¬Ã»ÓÐUserDao;

UserDaoʵÀý»¯¶ÔÏ󣬵«ÉÐδ³õʼ»¯£¬½«UserDao´æ´¢µ½µ½Èý¼¶»º´æ;

UserDaoÊôÐÔ×¢È룬ÐèÒªUserService£¬´ÓÈý¼¶»º´æ»ñÈ¡UserService£¬UserService´ÓÈý¼¶»º´æÒÆÈë¶þ¼¶»º´æ;

UserDaoÖ´ÐÐÆäËûÉúÃüÖÜÆÚ¹ý³Ì£¬×îÖÕ³ÉΪһ¸öÍê³ÉBean£¬´æ´¢µ½Ò»¼¶»º´æ£¬É¾³ý¶þÈý¼¶»º´æ;

UserService×¢ÈëUserDao;

UserServiceÖ´ÐÐÆäËûÉúÃüÖÜÆÚ¹ý³Ì£¬×îÖÕ³ÉΪһ¸öÍê³ÉBean£¬´æ´¢µ½Ò»¼¶»º´æ£¬É¾³ý¶þÈý¼¶»º´æ¡£

³£ÓõÄAware½Ó¿Ú

Aware½Ó¿ÚÊÇÒ»ÖÖ¿ò¼Ü¸¨ÖúÊôÐÔ×¢ÈëµÄÒ»ÖÖ˼Ï룬ÆäËû¿ò¼ÜÖÐÒ²¿ÉÒÔ¿´µ½ÀàËÆµÄ½Ó¿Ú¡£¿ò¼Ü¾ß±¸¸ß¶È·â×°ÐÔ£¬ÎÒÃǽӴ¥µ½µÄÒ»°ã¶¼ÊÇÒµÎñ´úÂ룬һ¸öµ×²ã¹¦ÄÜAPI²»ÄÜÇáÒ׵ĻñÈ¡µ½£¬µ«ÊÇÕâ²»Òâζ×ÅÓÀÔ¶Óò»µ½ÕâЩ¶ÔÏó£¬Èç¹ûÓõ½ÁË¡£
³£ÓÃAware½Ó¿Ú

0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡

¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿