解决XmlBeanFactory过时问题

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




猜你喜欢

转载自blog.csdn.net/qq_41541619/article/details/79592225
今日推荐