可以从maven仓库获取,也可以从这里获取
org.springframework
spring-context
5.2.3.RELEASE
org.springframework
spring-beans
5.2.3.RELEASE
注意:在Spring容器中对象是用bean 表示
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:content="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
beans>
<bean id="注册到Spring中对象的名字(可以自己取)" class="注册到Spring中对象的路径(包名+类名)">bean>
获取方法有两种:
【方式一】 **(建议使用)**使用ApplicationContext接口和ClassPathXmlApplicationContext类(ClassPathXmlApplicationContext类是ApplicationContext接口的子类)
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring配置文件的名称")
【方式二】使用BeanFactory接口和XmlBeanFactory类(XmlBeanFactory类是BeanFactory接口的子类)和ClassPathResource类
BeanFactory applicationContext = new XmlBeanFactory(new ClassPathResource("spring-config.xml"))
相同点:ApplicationContext接口和BeanFactory接口都是可以获取到Spring容器的上下文,并且完成获取Spring容器里的对象,所表示的效果差不多
不同点:
在继承关系和功能方面:ApplicationContext接口是BeanFactory接口的子类,ApplicationContext接口继承了BeanFactory接口的所有功能和能力。BeanFactory接口只具备最基本的访问Bean的能力,而ApplicationContext接口除了这个能力外,还有了对国际化⽀持、资源访问⽀持、以及事件传播等⽅⾯的⽀持。ApplicationContext接口的功能更加强大。
**在性能和加载方式方面:**BeanFactory是按需求加载bean(懒汉式加载),而ApplicationContext则是一次性加载全部的bean(饿汉式加载)
Spring上下文对象的getBean()方法有很多重载方法,这里介绍三种常用的:
【第一种通过bean的id名称来获取bean】
User user = (User) applicationContext.getBean("user");
注意:参数里的字符串内容要用spring-config.xml配置文件的bean的id名称一样
【第二种通过类型来获取bean】
User user = applicationContext.getBean(User.class)
【第三种通过bean的id名称和类的类型来获取bean】 (强烈推荐使用)
User user = applicationContext.getBean("user",User.class)