Spring:BeanFactory、ApplicationContext、Resource
来源:互联网 发布:ae cc 2017 mac下载 编辑:程序博客网 时间:2024/05/02 00:35
• ApplicationContext是BeanFactory的子接口。
• BeanFactory通常称为Bean容器,ApplicationContext通常称为应用上下文。
• ApplicationContext的功能要多于BeanFactory,如它可以加载外部的资源文件、可以自动进行AOP切面、可以识别自动代理的的类、可以识别用于监听Bean创建的类等。
在实体使用时,应使用ApplicationContext类型的对象。
ApplicationContext是一个接口,有多个实现类,我们在使用时就是用的他的某个实现类:
1, ClassPathXmlApplicationContext
2, FileSystemXmlApplicationContext
3, XmlWebApplicationContext(在Web应用中使用)
ClassPathXmlApplicationContext(读取classpath中的资源)
@Test
publicvoid testClassPathXmlApplicationContext_1() {
//指定一个配置文件,需要指定一个相对于classpath根目录的相对路径
ApplicationContext applicationContext =newClassPathXmlApplicationContext(//
"cn/itcast/c_applicationcontextSubclass/applicationContext_dao.xml");
String[] names = applicationContext.getBeanDefinitionNames();//获取所有定义的bean的名称
System.out.println(Arrays.toString(names));
}
@Test
publicvoid testClassPathXmlApplicationContext_2() {
//指定多个配置文件,需要指定多个相对于classpath根目录的相对路径
ApplicationContext applicationContext =newClassPathXmlApplicationContext(//
new String[] {
"cn/itcast/c_applicationcontextSubclass/applicationContext_dao.xml",
"cn/itcast/c_applicationcontextSubclass/applicationContext_service.xml" }
);
String[] names =applicationContext.getBeanDefinitionNames();// 获取所有定义的bean的名称
System.out.println(Arrays.toString(names));
}
@Test
publicvoid testClassPathXmlApplicationContext_3() {
//指定一个配置文件,需要指定一个相对于某类的相对路径
//第2个参数是表示相对于这个类的路径
ApplicationContextapplicationContext =newClassPathXmlApplicationContext(//
"applicationContext_dao.xml",//
MainTest.class);
String[] names =applicationContext.getBeanDefinitionNames();// 获取所有定义的bean的名称
System.out.println(Arrays.toString(names));
}
@Test
publicvoid testClassPathXmlApplicationContext_4() {
//指定多个配置文件,需要指定多个相对于某类的相对路径
//第2个参数是表示相对于这个类的路径
ApplicationContextapplicationContext =newClassPathXmlApplicationContext(//
new String[] {"applicationContext_dao.xml",
"applicationContext_service.xml" },
MainTest.class
);
String[] names =applicationContext.getBeanDefinitionNames();// 获取所有定义的bean的名称
System.out.println(Arrays.toString(names));
}
FileSystemXmlApplicationContext(读取指定路径的资源)
@Test
publicvoid testFileSystemXmlApplicationContext_1() {
//指定一个配置文件,推荐写绝对路径
ApplicationContext ac = new FileSystemXmlApplicationContext(
"applicationContext_dao.xml");
String[] names = ac.getBeanDefinitionNames();
System.out.println(Arrays.toString(names));
}
@Test
publicvoid testFileSystemXmlApplicationContext_2() {
//指定多个配置文件,推荐写绝对路径
ApplicationContext ac = new FileSystemXmlApplicationContext(//
new String[] {"c:/applicationContext_dao.xml",//
"c:/applicationContext_service.xml"//
});
String[] names = ac.getBeanDefinitionNames();
System.out.println(Arrays.toString(names));
}
XmlWebApplicationContext
// 注意:需要在Web的环境下才可以运行
@Test
publicvoid testXmlWebApplicationContext(){
XmlWebApplicationContext ac =new XmlWebApplicationContext();// 这时并没有初始化容器
ac.setServletContext(servletContext);//需要指定ServletContext对象
ac.setConfigLocation("/WEB-INF/applicationContext.xml");// 指定配置文件路径,开头的斜线表示Web应用的根目录
ac.refresh(); // 初始化容器
String[] names = ac.getBeanDefinitionNames();// 获取所有定义的bean的名称
System.out.println(Arrays.toString(names));
Resource(Spring中的资源定义)
此接口的全名为:org.springframework.core.io.Resource
比较常用的资源定义的实现类为:
1, ClassPathResource 从classpath中读取
2, FileSystemResource 从文件系统中读取
3, UrlResource 从指定URL中读取
4, ServletContextResource 必须要在web环境下使用
ClassPathResource
@Test
publicvoid testClassPathResource_1()throws Exception {
//指定一个相对于classpath根目录的相对路径
Resource resource = new ClassPathResource(//
"cn/itcast/d_resource/applicationContext.xml");
System.out.println(resource.getFile().getAbsolutePath());
}
@Test
publicvoid testClassPathResource_2()throws Exception {
//指定一个相对于指定类的相对路径
Resource resource = new ClassPathResource("applicationContext.xml", MainTest.class);
System.out.println(resource.getFile().getAbsolutePath());
}
FileSystemResource
@Test
publicvoid testFileSystemResource_1()throws Exception {
//指定一个资源路径,推荐写绝对路径
Resource resource = new FileSystemResource("c:/applicationContext.xml");
System.out.println(resource.getFile().getAbsolutePath());
}
UrlResource
@Test
publicvoid testUrlResource()throws Exception {
//指定一个URL,如file://...或是http://...等等
Resource resource = new UrlResource("file://c:/applicationContext.xml");
System.out.println(resource.getFile().getAbsolutePath());
}
ServletContextResource
// 注:要在Web环境中使用
@Test
publicvoid testServletContextResource(){
//路径开头的斜线代表当前Web应用的根目录
String path = "/WEB-INF/applicationContext.xml";
Resource resource = new ServletContextResource(servletContext, path);
System.out.println(resource.getFile().getAbsolutePath());
}
使用特定格式的字符串表示各种类型的Resource
@Test
publicvoid testResourceString()throws Exception {
ApplicationContext ac =new ClassPathXmlApplicationContext(//
"applicationContext.xml", getClass());
// ClassPathResource
Resource resource1 = ac.getResource(//
"classpath:cn/itcast/d_resource/applicationContext.xml");
// UrlResource
Resource resource2 = ac.getResource("file://c:/applicationContext.xml");
// UrlResource
Resource resource3 = ac.getResource("http://www.itcast.cn/applicationContext.xml");
System.out.println(resource1.getFile().getAbsolutePath());
System.out.println(resource2.getFile().getAbsolutePath());
System.out.println(resource3.getFile().getAbsolutePath());
}
- Spring:BeanFactory、ApplicationContext、Resource
- Spring Gossip: BeanFactory、ApplicationContext
- spring beans beanfactory applicationcontext
- Spring Bean ApplicationContext BeanFactory
- 【Spring】BeanFactory/ApplicationContext
- Spring--BeanFactory和ApplicationContext
- BeanFactory与ApplicationContext【Spring】
- Spring--BeanFactory和ApplicationContext
- spring之applicationContext、beanFactory
- 【spring】BeanFactory 对比 ApplicationContext
- spring中BeanFactory和ApplicationContext
- BeanFactory and ApplicationContext in Spring
- 【Spring实战】--ApplicationContext和BeanFactory
- Spring中BeanFactory、ApplicationContext区别
- Spring--ApplicationContext和BeanFactory区别
- spring BeanFactory和ApplicationContext详解
- Spring中的ApplicationContext与BeanFactory
- [学习笔记] Spring beanfactory applicationcontext
- Tips:关于MKMapView的一些操作小技巧
- Python-enumerate
- 使用支持向量机(SVM)
- Android Studio引入jar包和so文件(armeabi和armeabi-v7a)
- ios 的数据存储
- Spring:BeanFactory、ApplicationContext、Resource
- hpp头文件与h头文件的区别
- TCP,IP详解,卷一:协议学习笔记之第三章IP:网际协议
- iOS开发者账号申请
- 机器学习:KNN K近邻算法
- EL表达式
- 如何构建高性能计算云
- android - Dialog(未完待续)
- unserialize(),serialize(),__wakeup(),__sleep()函数