7.Spring-Bean的获取
本文最后更新于2023.11.30-17:26,某些文章具有时效性,若有错误或已失效,请在下方留言或联系涛哥。
2.BeanFactory的使用
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("ApplicationContext.xml"));
通过调用getBean方法可以获取到spring容器管理的bean
BeanFactory里面通过getBean获取bean实例,先来看一下getBean的几个重载:
getBean(String name)
getBean(Class<T> requiredType)
getBean(String name, Class<T> requiredType)
getBean(String name, Object... args)
User user=beanFactory.getBean(User.class);
User user=beanFactory.getBean("user",User.class);
User user=(User)beanFactory.getBean("user");
3.使用ApplicationContext接口
ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext.xml");
实现类:
- 
//单个配置文件 ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml"); //多个配置文件 String[] locations = {"bean1.xml","bean2.xml",...} ApplicationContext context=new ClassPathXmlApplicationContext(locations) - 
FileSystemXmlApplicationContext (需要写完整的路径)
//单个配置文件 ApplicationContext context=new FileSystemXmlApplicationContext("bean.xml"); //多个配置文件 String[] locations = {"bean1.xml","bean2.xml",...} ApplicationContext context=new FileSystemXmlApplicationContext(locations); - 
 
4.BeanFactory和ApplicationContext接口的区别:
- BeanFactory 会采取 延迟加载,只有在真正获取bean时,才会完成bean的实例化
 - ApplicaionContext 会在配置加载时,就完成单例bean的实例化。
 
区别:在实际开发更多的使用ApplicationContext接口,会导致项目在启动的时候,消耗较多的资源和时间,而在项目工作时 获取bean会更加快速。
5.Bean的作用域:
在bean中 加入scope属性
 默认值为:singleton 表示单例模式,在Spring容器中,只有一个该bean的实例。
 prototype 表示多例模式,在每一次取获取bean的时候,会返回一个新的实例。
 request 用于在web开发当中,将bean存在request域中。
 request.setAttribute();
 session 用于在web开发当中,将bean存在session域中。 
 session.setAttribute();
PS:在开发当中使用最多的是 singleton和prototype。
如果在开发中多次实例化了 spring容器,那么每个容器单独管理自己容器内部的bean,通常在web项目中,Spring容器只会初始化一次。
如何通过bean 去获取容器:
1.给bean 实现 ApplicationContextAware 接口
2.重写接口要求的方法
阅读剩余
            版权声明:
作者:涛哥
链接:https://ltbk.net/back/spring_family/spring/article/889.html
文章版权归作者所有,未经允许请勿转载。
            作者:涛哥
链接:https://ltbk.net/back/spring_family/spring/article/889.html
文章版权归作者所有,未经允许请勿转载。
        THE END
    
        
        






