例如: 下面会解释这段代码的各个API是如何使用,以及其他用法
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) app.getBean("userService");
userService.save();
}
1、applicationContext: 接口类型,代表应用上下文,可以通过其实例获得Spring容器中的Bean对象
1、ClassPathXmlApplicationContext: 是从类的根路径下加载配置文件推荐使用这种
2、FileSystemXmlApplicationContext: 是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置
3、AnnotationConfigApplicationContext: 当使用注解配置容器对象时,需要使用此类来创建spring容器,它用来读取注解
getBean的源码如下。里面提供了2个API:
1、需要传id值。也就是applicationContext.xml文件里面的bean标签的id属性值,写到getBean("")里面。例如getBean("userService")
public Object getBean(String name) throws BeansException {
assertBeanFactoryActive();
return getBeanFactory().getBean(name);
}
2、需要传字节码对象类型。例如getBean("UserService.class")
public <T> T getBean(Class<T> requiredType) throws BeansException {
assertBeanFactoryActive();
return getBeanFactory().getBean(requiredType);
}
注意,上面第1个需要id值的那个,当参数的数据类型是字符串时,表示根据Bean的id从容器中获得Bean实例,返回是Object,则需要强转 上面第2个需要字节码对象的那个,当参数的数据类型是Class类型时,表示根据类型从容器中匹配Bean实例,当容器中相同类型的Bean有多个时,就会报错