ClassPathXmlApplicationContext
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
追溯发现其实继承了ApplicationContext
继承关系
public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
发现继承了很多beanfactory,而这些beanfactory都继承于beanfactory
ApplicationContext是一个集大成者
所以可以用applicationContext代替beanfactory
public class Main {
public static void main(String[] args) {
//原始写法
// DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
//替换后
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();
beanDefinition.setBeanClass(User.class);
applicationContext.registerBeanDefinition("user",beanDefinition);
applicationContext.refresh();
User user1 = applicationContext.getBean("user", User.class);
//因为applicationContext是集大成者,所以有下面功能!!!
//获取系统环境
System.out.println(applicationContext.getEnvironment().getSystemEnvironment());
//获取jvm环境
System.out.println(applicationContext.getEnvironment().getSystemProperties());
Resource resource = applicationContext.getResource("D:\\项目\\spring-study\\FunnySpring\\src\\main\\resources\\spring.xml");
System.out.println(resource);
System.out.println(user1);
String test = applicationContext.getMessage("test", null, Locale.CHINESE);
System.out.println(test);
}
}
输出结果: