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