Spring源码阅读笔记2-文件加载

上篇写写到运行一个spring程序。本编主要学习配置文件加载和bean的配置。

我们运行时,会用到如下代码

package com.weiguozhui.SpringCode;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestMain {

	public static void main(String[] args) {
		//加载配置文件
		ApplicationContext context=new ClassPathXmlApplicationContext("/application-context.xml");
		// 读取配置文件中配置的bean
		Hello hello=(Hello) context.getBean("hello");
		System.out.println(hello.getName()+hello.getAge());
	}

}

这里涉及到一个接口和一个类。

分别是ApplicationContext接口和ClassPathXmlApplicationContext类。

先看看ApplicationContext这个接口里面的东西,源码如下:


package org.springframework.context;

import org.springframework.beans.factory.HierarchicalBeanFactory;
import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.core.env.EnvironmentCapable;
import org.springframework.core.io.support.ResourcePatternResolver;


public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,
		MessageSource, ApplicationEventPublisher, ResourcePatternResolver {

	/**
	 * Return the unique id of this application context.
	 * @return the unique id of the context, or {@code null} if none
	 */
	String getId();

	/**
	 * Return a name for the deployed application that this context belongs to.
	 * @return a name for the deployed application, or the empty String by default
	 */
	String getApplicationName();

	/**
	 * Return a friendly name for this context.
	 * @return a display name for this context (never {@code null})
	 */
	String getDisplayName();

	/**
	 * Return the timestamp when this context was first loaded.
	 * @return the timestamp (ms) when this context was first loaded
	 */
	long getStartupDate();

	
	ApplicationContext getParent();

	
	AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException;

}

 

为节省篇幅,把一些解释都删除了。可以看到,这里有6个抽象方法

String getId();返回该applicationContext对的唯一id
String getApplicationName();返回该applicationContext的类名
String getDisplayName();也是类名
long getStartupDate();返回第一次加载该applicationContex第一次初始化的时间
 ApplicationContext getParent();返回该applicationContext的父类

 AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException;额,不知道怎么说,返回这个context的工厂,里面包含的配置的bean。

再看ClassPathXmlApplicationContext类里的内容。

这里它继承了很多的类。有点繁琐啊。今天先这样吧

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值