The type XmlBeanFactory is deprecated,XmlBeanFactory在3.1以后已经被废弃,不再推荐使用
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
解决方案:
1、在不改变处理逻辑的基础上,改为
Resource resource=new ClassPathResource("applicationContext.xml");
BeanFactory factory=new DefaultListableBeanFactory();
BeanDefinitionReader bdr=new XmlBeanDefinitionReader((BeanDefinitionRegistry) factory1);
bdr.loadBeanDefinitions(resource);
BeanFactory在启动的时候,不会创建bean的实例,而是在getBean()的时候,才会创建Bean的实例
factory.getBean("beanClass");
2、使用ApplicationContext
ApplicationContext sc = new ClassPathXmlApplicationContext("applicationContext.xml");
ApplicationContext在读取配置文件的时候,配置文件中的bean就会被实例化(不考虑bean的作用域)
上代码
BeanClass.java文件
package bean;
public class BeanClass {
public BeanClass(){
super();
System.out.println("BeanClass被实例化");
}
}
Test.java文件
package Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionReader;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public class Test {
public static void main(String[] args) {
ApplicationContext sc = new ClassPathXmlApplicationContext("applicationContext.xml");
Resource resource=new ClassPathResource("applicationContext.xml");
BeanFactory fa=new DefaultListableBeanFactory();
BeanDefinitionReader bdr=new XmlBeanDefinitionReader((BeanDefinitionRegistry) fa);
bdr.loadBeanDefinitions(resource);
}
}
Spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<bean id="beanClass" class="bean.BeanClass"></bean>
</beans>
运行Test.java文件
三月 17, 2018 4:04:07 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@4d76f3f8: startup date [Sat Mar 17 16:04:07 CST 2018]; root of context hierarchy
三月 17, 2018 4:04:07 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
BeanClass被实例化
三月 17, 2018 4:04:08 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
BeanClass被实例化