***对比ObjectFactory与ApplicationContext***
•ApplicationContext是BeanFactory的子接口。
•BeanFactory通常称为Bean容器,ApplicationContext通常称为应用上下文。
•ApplicationContext的功能要多于BeanFactory,如它可以加载外部的资源文件、可以自动进行AOP切面、可以识别自动代理的的类、可以识别用于监听Bean创建的类等。
ApplicationContext是一个接口,有多个实现类,我们在使用时就是用的他的某个实现类:
1, ClassPathXmlApplicationContext
2, FileSystemXmlApplicationContext
3, XmlWebApplicationContext(在Web应用中使用)
***ClassPathXmlApplicationContext(读取classpath中的资源)***
读取一个配置文件
@Test
public void testApplicationContext() throws Exception {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserServiceImp userService = (UserServiceImp) app.getBean("userService");
System.out.println(userService.getUserDao().toString());
userService.getUserDao().printInfo();
}
读取多个配置文件
@Test
public void testApplicationContext() throws Exception {
ApplicationContext app = new ClassPathXmlApplicationContext(new String[]{
"applicationContext.xml","applicationContext_dao.xml"
});
UserDao userDao1 = (UserDao) app.getBean("userDao1");
userDao1.printInfo();
System.out.println("*************");
UserDao userDao = (UserDao) app.getBean("userDao");
userDao.printInfo();
}
***FileSystemXmlApplicationContext(读取指定路径的资源)***
@Test
public void testFileSystemXmlApplicationContext() throws Exception {
ApplicationContext app = new FileSystemXmlApplicationContext(new String[]{
"c:/applicationContext.xml","c:/applicationContext_dao.xml"
});
UserDao userDao1 = (UserDao) app.getBean("userDao1");
userDao1.printInfo();
System.out.println("*************");
UserDao userDao = (UserDao) app.getBean("userDao");
userDao.printInfo();
}