Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > HelloWorld Spring


Автор: Baka_tyan 6.12.2007, 14:50
Начал изучать Spring, проблема вылезла на 1же примере HelloWorld. 

Код

package com.springinaction.charter01.hello;
import java.io.FileInputStream;



import org.springframework.beans.factory.BeanFactory; 
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.Resource;
public class HelloApp {
    public static void main(String[] args) throws Exception {
        BeanFactory factory = new XmlBeanFactory( new FileInputStream("hello.xml"));   //в этой строке непонятно
        GreetingService greetingService = (GreetingService)factory.getBean("greetingService");
        greetingService.sayGreeting();
    }
}

1) не хочет компилиться. Захожу в док, смотрю на конструктор XmlBeanFactory : 
Код

XmlBeanFactory(Resource resource) 
          Create a new XmlBeanFactory with the given resource, which must be parsable using DOM. 
XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) 
          Create a new XmlBeanFactory with the given input stream, which must be parsable using DOM 

Конструктор принимает Resource, но никак не FileInputStream как описано в книге. 
Если исправить и сделать как подсказывает Eclipse,
Код

BeanFactory factory = new XmlBeanFactory((Resource) new FileInputStream(new File("hello.xml")));

компилируется без проблем, но выдает Exception 
Exception in thread "main" java.lang.ClassCastException: java.io.FileInputStream cannot be cast to org.springframework.core.io.Resource
    at com.springinaction.charter01.hello.HelloApp.main(HelloApp.java:14)

Как сделать чтобы работало?

Автор: ratzko 6.12.2007, 15:02
Попробуи так:
Код

BeanFactory factory =new XmlBeanFactory(new FileSystemResource("hello.xml"));


лу4ше изу4ать по :
Spring in Action, Second Edition Craig Walls with Ryan Breidenbach

Автор: Baka_tyan 6.12.2007, 15:09
Цитата(ratzko @ 6.12.2007,  15:02)
Попробуи так:
Код

BeanFactory factory =new XmlBeanFactory(new FileSystemResource("hello.xml"));


лу4ше изу4ать по :
Spring in Action, Second Edition Craig Walls with Ryan Breidenbach

изменил, вылезло вот это:


Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.springframework.beans.factory.support.AbstractBeanFactory.<init>(AbstractBeanFactory.java:93)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.<init>(AbstractAutowireCapableBeanFactory.java:108)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.<init>(AbstractAutowireCapableBeanFactory.java:118)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.<init>(DefaultListableBeanFactory.java:87)
    at org.springframework.beans.factory.xml.XmlBeanFactory.<init>(XmlBeanFactory.java:72)
    at org.springframework.beans.factory.xml.XmlBeanFactory.<init>(XmlBeanFactory.java:61)
    at com.springinaction.charter01.hello.HelloApp.main(HelloApp.java:13)


блин, ну я понимаю там ошибка в сложном примере, но в HelloWorld программке - это слишком.  
кстати, это и есть Spring in Action,  Craig Walls with Ryan Breidenbach

Автор: ratzko 6.12.2007, 15:14
добавь commons-logging.jar в проект

Автор: Baka_tyan 6.12.2007, 15:33
Спасибо! Все теперь работает  smile 

Автор: v2v 8.12.2007, 01:16
если дальше будешь разбиратся с spring MVC ,  то рекомендую http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step.html туториал.

Автор: Baka_tyan 10.12.2007, 12:35
Пасиб, туториал хороший. 
Кто столкнется с этими граблями - Spring in action в первой редакции для Spring 2 не подходит, нужно  читать 2 редакцию.
... Spring - Must have!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)