Springs XmlBeanFactory устарела - PullRequest
50 голосов
/ 08 марта 2011

Я стараюсь учить весну. Я слежу за этим сайтом http://www.roseindia.net/spring/spring3/spring-3-hello-world.shtml

Я попробовал один пример в этом. Я использую кое-что как ниже, но здесь это показывает:

Тип XmlBeanFactory устарел

Что я должен использовать в качестве альтернативы этому?

public class SpringHelloWorldTest {
    public static void main(String[] args) {

        XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("SpringHelloWorld.xml"));

        Spring3HelloWorld myBean = (Spring3HelloWorld)beanFactory.getBean("Spring3HelloWorldBean");
        myBean.sayHello();
    }
}

Ответы [ 11 ]

50 голосов
/ 09 февраля 2012

ApplicationContext - это подчиненный интерфейс BeanFactory. Вы можете использовать этот способ

public class SpringHelloWorldTest {
    public static void main(String[] args) {
        ApplicationContext context= new ClassPathXmlApplicationContext("SpringHelloWorld.xml");
        Spring3HelloWorld myBean= (Spring3HelloWorld) context.getBean("Spring3HelloWorldBean");
        myBean.sayHello();
    }
}
15 голосов
/ 08 марта 2011

Вот код замены,

public static void main(String[] args){
    ApplicationContext context=new ClassPathXmlApplicationContext(new String[]{"SpringHelloWorld.xml"});
    BeanFactory factory=context;
    Spring3HelloWorld myBean=(Spring3HelloWorld)factory.getBean("Spring3HelloWorldBean");
    myBean.sayHello();
}
9 голосов
/ 17 апреля 2012
BeanDefinitionRegistry beanDefinitionRegistry = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanDefinitionRegistry);
reader.loadBeanDefinitions(new ClassPathResource("SPRING_CONFIGURATION_FILE"));
6 голосов
/ 13 апреля 2013

Новый способ получения контекста bean-компонентов (без приведения класса):

BeanDefinitionRegistry beanFactory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
reader.loadBeanDefinitions(new ClassPathResource("beans.xml"));

При запуске контекста всего приложения следует использовать

ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
6 голосов
/ 08 марта 2011

Вы можете использовать ClassPathXmlApplicationContext class.

1 голос
/ 07 июля 2017

Альтернатива XMLBeanFactory найдена в документации Spring

GenericApplicationContext ctx = new GenericApplicationContext();
XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(ctx);
xmlReader.loadBeanDefinitions(new 
ClassPathResource("applicationContext.xml"));
PropertiesBeanDefinitionReader propReader = new 
PropertiesBeanDefinitionReader(ctx);
propReader.loadBeanDefinitions(new 
ClassPathResource("otherBeans.properties"));
ctx.refresh();

MyBean myBean = (MyBean) ctx.getBean("myBean");
1 голос
/ 18 мая 2017

как насчет этого:

DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
reader.loadBeanDefinitions(new ClassPathResource("config/Beans.xml"));
Messager msg = (Messager) factory.getBean("Messager");
1 голос
/ 12 февраля 2015

Вот лучший способ реализации

Resource res = new FileSystemResource("beans.xml");
XmlBeanFactory factory = new XmlBeanFactory(res);

or

ClassPathResource res = new ClassPathResource("beans.xml");
XmlBeanFactory factory = new XmlBeanFactory(res);

or

ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
       new String[] {"applicationContext.xml", "applicationContext-part2.xml"});
// of course, an ApplicationContext is just a BeanFactory
BeanFactory factory = (BeanFactory) appContext;
0 голосов
/ 04 июля 2019

Существует предупреждение " Утечка ресурсов: 'контекст' никогда не закрывается " с принятым ответом.

Решение, предложенное в публикации SO Spring ApplicationContext - утечка ресурсов: никогда не закрывается «контекст» устраняет проблему.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 22 сентября 2018

Используйте «FileSystemXmlApplicationContext» как

ApplicationContext  context =  new FileSystemXmlApplicationContext("SpringHelloWorld.xml");

Spring3HelloWorld myBean= (Spring3HelloWorld) context.getBean("Spring3HelloWorldBean");

myBean.sayHello();
...