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被实例化