BeanFactor的开发步骤
-
导入
Spring的jar包或Maven坐标;导入坐标
org.springframework spring-context 5.3.7 -
定义
UserService接口及其UserServiceImpl实现类; -
创建
beans.xml文件,将UserServiceImpl的信息配置到改xml当中;在
resource文件夹中创建beans.xml文件,配置我们想要交给Spring管理的类的信息,id是这个bean的名字,我们可以通过这个名字获取实际的对象。 -
编写测试代码,创建
BeanFaactor,加载配置文件,获取UserService实例对象;//创建工厂对象 DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory() ; //创建一个读取器 XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory) ; //读取配置文件给工厂 reader.loadBeanDefinitions("beans.xml") ; //根据id获取bean实例对象 UserService userService = (UserService) beanFactory.getBean("userService"); System.out.println(userService);创建
UserDao的Bean并且将我们的USerDao配置给我们的服务UserService先在我们的
UserService类中创建方法setUserDao方法public class UserServiceImpl implements UserService{ public void setUserDao(UserDaoImpl userDao){ System.out.println("BeanFactory去调用该方法获得userDao设置到此处" + userDao); } }更改
baean.xml文件中UserService的配置,将userDao自动注入到我们set方法中
什么是ApplicationContext
ApplicationContext称为Spring容器,内部封装了BeanFactory,让BeanFactory的功能更加丰富和强大,使用ApplicationContext进行开发时,xml配置文件的名称习惯习惯写为applicationContext.xml。
如何使用ApplicationContext
//创建ApplicationContext,加载配置文件,实例化容器
ApplicationContext applicationContext("applicationContext.xml");
//根据beanName获得容器中的的实例
UserService userService = (UserService) applicationContext.getBean("userService");
BeanFactorAnd ApplicationContext的联系
BeanFactory是Spring的早期接口,称为Spring的工厂,ApplicationContext是更后期的接口更高级的接口,称之为Spring容器;ApplicationContext在BaenFactory的基础上对功能进行了扩展,例如:监听功能、国际化功能等。BeanFctory的API更偏向底层,ApplicationContext的API大多数是对这些底层API的封装;- Bean创建的主要逻辑和功能都封装在
BeanFactory中,ApplicationContext不仅继承了BeanFactory,而且ApplicationContext内部还维护着BeanFactory的引用,所以,ApplicationContext与BeanFactory既有继承关系,又有融合关系。 - Bean的初始化时机不一样,原始的BeanFactory实在首次调用getBean时才进行Bean的创建,而ApplicationContext则时配置文件加载,容器一创建就将Bean都实例化并初始化好。

BeanFactorAnd ApplicationContext的继承体系
只在Spring基础环境下,常用的三个ApplicationContext作用如下:
ClassPathXmlApplicationContext:加载类加载路径下的xml配置文件的ApplicationContext。FileSystemXmlApplicationContext:加载类磁盘路径下的xml配置文件的ApplicationContext。AnnotationConfigApplicationContext:加载类注解配置类的ApplicationContext。

Comments NOTHING