ApplicationContext 的三个常用实现类 ClassPathXmlApplicationContext 加载类路径下的配置文件(最常用) FileSystemXmlApplicationContext 加载磁盘路径下的配置文件(必须有访问权限) AnnotationConfigApplicationContext 读取注解创建容器 核心容器的两个接口的区别 ApplicationContext; 单例对象适用 创建对象采取的策略是立即加载,读取完配置文件马上就创建配置文件中配置的对象 BeanFactory: 多例对象适用 创建对象采取的策略是延迟加载,什么时候根据id获取对象,什么时候真正的创建对象
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="AccountService" class="com.study.service.impl.AccountServiceImpl"></bean> </beans>
package com.study.test; import com.study.service.AccountService; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; public class SpringTest1 { /** *获取spring的Ioc核心容器,根据id获取对象 * *ApplicationContext 的三个常用实现类 * ClassPathXmlApplicationContext 加载类路径下的配置文件(最常用) * FileSystemXmlApplicationContext 加载磁盘路径下的配置文件(必须有访问权限) * AnnotationConfigApplicationContext 读取注解创建容器 * *核心容器的两个接口的区别 * ApplicationContext; 单例对象适用 * 创建对象采取的策略是立即加载,读取完配置文件马上就创建配置文件中配置的对象 * BeanFactory: 多例对象适用 * 创建对象采取的策略是延迟加载,什么时候根据id获取对象,什么时候真正的创建对象 * */ public static void main(String[] args) { //ApplicationContext接口 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); AccountService service = (AccountService)ac.getBean("AccountService"); System.out.println(service); //BeanFactory接口 Resource resource = new ClassPathResource("applicationContext.xml"); //XmlBeanFactory方法已过时,不建议使用,只是为了表述两个接口的区别 BeanFactory factory = new XmlBeanFactory(resource); AccountService service1 = (AccountService)factory.getBean("AccountService"); System.out.println(service1); } }