spring开发提倡接口编程,配合di技术可以层与层的解耦,例如程序定义了一个接口,有两个类实现了该接口,我们在bean中配置这两个类,使用的时候可以用接口类来声明对象,只需要通过获取不同bean就可以实现不同的功能。
从ApplicationContex 应用上下文容器中获取bean和从bean工厂容器中获取bean:
1.如果使用ApplicationContext ,则配置的bean如果是 singlton不管你用不用,都被实例化.(好处就是可以预先加载,缺点就是耗内存)
2.如果是 BeanFactory ,则当你获取beanfacotry时候,配置的bean不会被马上实例化,当你使用的时候,才被实例(好处节约内存,缺点就是速度)
3.规定: 一般没有特殊要求,应当使用ApplicatioContext完成(90%)
bean 的 scope的细节
后三个主要是在网站开发中用到的。
三种获取ApplicationContext 对象引用的方法
1. ClassPathXmlApplicationContext-> 通过类路径
2. FileSystemXmlApplicationContext-> 通过文件路径
举例:
ApplicationContext ac=newFileSystemXmlApplicationContext("文件路径beans.xml / applicationContext.xml");
3. XmlWebApplicationContext(主要在网站开发中用到,只要Tomcat已启动便会获取spring框架)