为了账号安全,请及时绑定邮箱和手机立即绑定

Srping容器

Srping容器

muke3861695 2017-12-23 12:24:41
怎么理解是Spring的容器  怎么能称作一个容器
查看完整描述

1 回答

已采纳
?
慕圣0830664

TA贡献41条经验 获得超26个赞

Spring的IOC就是一个容器,也可以称为一个Bean工厂,专用用来生成Bean的实例。你可以简单将IOC理解为一个Map<String, Object>,其中存放了实例化了的对象,我们可以通过指定的key获取对应的实例对象。简单说下Spring IOC的执行流程(基于xml格式):

假如有这样一个配置文件为:applicationContext.xml

<beans>

    <bean id="person" class="com.imooc.Person">

         <property name="addr" ref="address"></property>

     </bean>

     <bean id="address" class="com.imooc.Address"></bean>

</beans>


1、读取配置文件:applicationContext.xml(默认的文件名称就是这个)

2、实例化对象。根据读取到的配置文件信息,利用反射生成“com.imooc.Person”,“com.imooc.Address”这两个类的实例Person与Address,,并存放到Map中,key为id的属性值,即:map.put("person",Person), map.put("address",Address)。

3、注入属性值。找到Person对象中的属性addr,获取该属性的set方法,反射调用该方法,参数为以address为key的对应的value:即map.get("address"),method.invoke(Person, map.get("address"));


获取Bean的方式一般是这样:

// ClassPathXmlApplicationContext就是一个工厂接口的一个实现类

ApplicationContext  ac = new ClassPathXmlApplicationContext("applicationContext.xml");

Person person = ac.getBean("person"); // 这里的"person"就是xml中的id的属性值

System.out.println(person.getAddr()); 


要是有兴趣,最好的办法的当然是自己去实现一个简单springIOC容器(包括xml方式和Annotation方式)。这样你就会理解的更透彻。。

查看完整回答
2 反对 回复 2017-12-24
  • 1 回答
  • 0 关注
  • 1026 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信