上篇写写到运行一个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类里的内容。
这里它继承了很多的类。有点繁琐啊。今天先这样吧