韩顺平Spring框架学习,学习笔记(五)

时间:2022-04-24 21:05:33

Bean工厂和ApplicationContext上下文

bean工厂介绍:

从applicationContext应用上下文容器获取bean和从bean工厂r容器中获取bean有什么区别: applicationContext中获取:      ApplicationContext ac=new ClassPathXmlApplication("com/sjy/beans.xml");     //当我们去实例化beans.xml,该文件中配置的bean被实例(该bean  scope是singleton)     //从bean中取出student ac.getBean("student"); BeanFactory 中获取:
   //如果我们使用beanfactory去获取bean,当你只是实例化该容器,那么容器的bean不被实例化,只有当你去使用getBeanm某个bean时,才会实         时的创建。     BeanFactory factory=new XmlBeanFactory(new ClassPathResource("com/sjy/beans.xml"));     factory.getBean("student");
结论:             1 :如果使用ApplicationContext,则配置的bean如果是singleton不管你用不用,都被实例化(好处就是可以预先加载,缺点就是耗内存)             2:如果是BeanFactory,则当你实例化该对象时候,配置的bean不会被马上实例化,当你使用的时候,才会实例(好处节约内存,缺点就是速度)             3:规定;一般都是使用ApplicationContext  bean的作用域:scope         singleton: 每次都创建对象;不配置scope时,为默认.         prototype: 延迟加载;      下面三个是在web端使用:         request:         session:         global-session
上下文的实现:   1,ClassPathXmlApplication :     默认为项目的classpath下相对路径  ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml"); 
  2, FileSystemXmlApplication :   默认为项目工作路径 即项目的根目录  ApplicationContext ac = new FileSystemXmlApplicationContext("src/main/resources/beans.xml");