目录
任务描述
在博客系统中,有许许多多的对象,比如用户和评论对象,这些对象在 Spring
中被称作为Bean
。
本关的任务就是学会怎么通过Spring I0C
容器去获取用户Bean
相关信息。
相关知识
通过本关学习,你将掌握如下知识点:
-
什么是
BeanFactory
容器; -
什么是
ApplicationContext
容器。
BeanFactory 容器
BeanFactory
是IoC
容器所定义的最底层接口,面向Spring
本身,它提供了IoC
最底层的设计,因此我们来看看该类中提供的几个主要方法:
-
boolean containsBean(String name)
:判断容器是否包含id
为name
的Bean
实例。 -
Object getBean(String name)
:获取容器中id
为name
的Bean
实例。 -
<T> getBean(Class<T> class)
:获取容器中属于class
类型的唯一的Bean
实例。 -
<T> T getBean(String name,Class class)
:获取容器中id
为name
,并且类型为class的
Bean
。 -
Class <?> getType(String name)
:获取容器中指定Bean
实例的类型。
这是IoC
最底层的设计,所有关于IoC
容器都将会遵守它所定义的方法。
ApplicationContext 容器
ApplicationContext
是BeanFactory
的子接口之一,也是其最高级接口之一,并对BeanFactory
功能做了许多的扩展,所以在绝大部分的工作场景下,都会使用ApplicationContext
作为IoC
容器。
图 1 接口图
两个实现类:
ClassPathXmlApplicationContext
:加载类路径下Spring
的配置文件;
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
FileSystemXmlApplicationContext
:加载本地磁盘下Spring
的配置文件。
String path="文件绝对路径";
ApplicationContext applicationContext=new FileSystemXmlApplicationContext(path);
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,按要求使用ApplicationContext
容器完成如下操作:
- 判断容器是否包含
User
和Comment
的Bean
实例,并输出判断结果; - 使用
getBean(String name,Class class)
方法获取Bean
实例,并调用实例中的toString()
方法做为输出内容。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过;
预期输出:
是否包含User:true,是否包含Comment:false
我是 User 类
参考代码
package Educoder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
//请在以下提示框内填写你的代码
/**********Begin**********/
//创建Spring的IoC容器对象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//判断IoC容器是否含有User实例
boolean user = applicationContext.containsBean("User");
//判断IoC容器是否含有Comment实例
boolean comment = applicationContext.containsBean("Comment");
//从IOC的容器中获取User实例
User spr1 = applicationContext.getBean("User", User.class);
//调用User实例toString方法
String s=spr1.toString();
/**********End**********/
//输出上述结果,禁止修改
System.out.println("是否包含User:"+user+","+"是否包含Comment:"+comment);
//以下s为调用toString方法返回的字符串
System.out.println(s);
}
}