03.Spring相关API
03.Spring相关APISpring的API体系异常庞大,我们现在只关注两个BeanFactory和ApplicationContext紫色部分:全都是接口浅绿色:抽象类绿色:具体的实现类(1)BeanFactoryBeanFactory是 IOC 容器的核心接口,它定义了IOC的基本功能。特点:在第一次调用getBean()方法时,创建指定对象的实例。@Testpublic void tes
·
03.Spring相关API
- Spring的API体系异常庞大,我们现在只关注两个BeanFactory和ApplicationContext
- 紫色部分:全都是接口
- 浅绿色:抽象类
- 绿色:具体的实现类
(1)BeanFactory
BeanFactory是 IOC 容器的核心接口,它定义了IOC的基本功能。
- 特点:在第一次调用getBean()方法时,创建指定对象的实例。
@Test
public void test2(){
// 核心接口,不会创建bean对象存到容器中
BeanFactory xmlBeanFactory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
//getBean的时候才真正创建bean对象
IUserDao userDao = (IUserDao) xmlBeanFactory.getBean("userDao");
userDao.save();
}
(2)ApplicationContext
代表应用上下文对象,可以获得spring中IOC容器的Bean对象。
-
特点:在spring容器启动时,加载并创建所有对象的实例
@Test public void UserTest(){ //获取到Spring上下文对象,借助上下文对象可以获取IOC容器的bean对象 // 1.底层利用dom4j解析applicationContext.xml文件 // 2.根据传入的bean对象id参数实例化该对象 // 3.利用该对象调用save方法。 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDao userDao = (UserDao) applicationContext.getBean("userDao"); userDao.save(); }
两者的区别就是创建实例对象的时机不一样。
(3)其他常用实现类
-
ClassPathXmlApplicationContext
它是从类的根路径下加载配置文件 推荐使用这种。 -
FileSystemXmlApplicationContext
它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。 -
AnnotationConfigApplicationContext
当使用注解配置容器对象时,需要使用此类来创建 spring 容器。它用来读取注解。
@Test
public void test1(){
// 获取到了spring上下文对象,借助上下文对象可以获取到IOC容器中的bean对象 ,加载的同时就创建了bean对象存到容器中
ApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//ApplicationContext fileSystemXmlApplicationContext = new FileSystemXmlApplicationContext("D:\\spring_code\\spring_quickstart\\src\\main\\resources\\applicationContext.xml");
// 使用上下文对象从IOC容器中获取到了bean对象
// 1.根据beanid在容器中找对应的bean对象
//IUserDao userDao = (IUserDao) classPathXmlApplicationContext.getBean("userDao");
// 2.根据类型在容器中进行查询:有可能报错的情况:根据当前类型匹配到多个实例
IUserDao userDao = classPathXmlApplicationContext.getBean("userDao",IUserDao.class);
// 调用方法
userDao.save();
}
(4)常用方法
- Object getBean(String name);
根据Bean的id从容器中获得Bean实例,返回是Object,需要强转。 - T getBean(Class requiredType);
根据类型从容器中匹配Bean实例,当容器中相同类型的Bean有多个时,则此方法会报错。 - T getBean(String name,Class requiredType);
根据Bean的id和类型获得Bean实例,解决容器中相同类型Bean有多个情况
(5)知识小结
ApplicationContext app = new ClasspathXmlApplicationContext("xml文件");
app.getBean("id");
app.getBean(Class);
更多推荐
已为社区贡献2条内容
所有评论(0)