2014-06-26 24 views
7

bana neden bir sınıf otomatik olarak gidemiyorum yardımcı olabilir? sınıf UserDaoImpl:Otomatik bağlantı kurulamadı. Hiçbir fasulye ... türü bulundu

@Service 
public class UserServiceImpl implements UserService { 

    @Autowired 
    private UserDao userDao; //here is the error 

    @Override 
    public void addUser(User user) { 

    } 

    @Override 
    public List<User> getUsers() { 
     return null; 
    } 

} 

Kontrolör:

@Controller 
public class UserController { 

    @Autowired 
    UserService userService; 

    String message = "This should be a list of users"; 

    @RequestMapping("/user") 
    public ModelAndView showMessage() { 
     ModelAndView modelAndView = new ModelAndView("user"); 
     modelAndView.addObject("message", message); 
     return modelAndView; 
    } 

} 

sorun olabilir

@Repository 
public class UserDaoImpl implements UserDao { 

    @Autowired 
    private SessionFactory sessionFactory; 

    @Override 
    public void addUser(User user) { 
     sessionFactory.getCurrentSession().save(user); 
    } 

    @Override 
    public List<User> getUsers() { 
     return sessionFactory.getCurrentSession().createSQLQuery("SELECT * FROM user").list(); 
    } 

} 

i diğer sınıfa bu sınıf autowire istiyor? size daha fazla dosya göstermeli miyim? Teşekkürler. DÜZENLEME:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 

    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop> 
       <prop key="hibernate.connection.driver_class">org.postgresql.Driver</prop> 
       <prop key="hibernate.connection.url">jdbc:postgresql://localhost:8080/****</prop> 
       <prop key="hibernate.connection.username">****</prop> 
       <prop key="hibernate.connection.password">****</prop> 
       <prop key="hibernate.current_session_context_class">thread</prop> 
       <prop key="show_sql">true</prop> 
      </props> 
     </property> 
     <property name="annotatedClasses"> 
      <list> 
       <value>model.User</value> 
      </list> 
     </property> 
    </bean> 

</beans> 

-sınıfı Kullanıcı hazırda ile eşleştirilmiş basit POJO şudur: tamam bu benim oturum factory.xml dosyasıdır. Ve belki web.xml :)

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     version="2.5"> 

    <display-name>Archetype Created Web Application</display-name> 

    <servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

</web-app> 

mvc-servlet-dispatcher.xml bize yardım edebilir:

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <context:component-scan base-package="controller" /> 

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/pages/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 

</beans> 

ve ben herhangi applicationContext.xml dosyanız yoksa, belki bu sorun olabilir , Bana bununla yardım edebilir misin? Ben Projemin ekran ve sorunu ekliyorum: http://screenshot.cz/75QVH/

+0

Evet, tabii, bize yapılandırmayı göstermek meydana gelecektir bulundu. Neden birinin diğerine otomatik olarak bağlanmasını bekliyorsunuz? –

+1

Ve gerçek istisnayı göster. – slim

+0

Bize 'applicationContext.xml' dosyanızı ve mvc-dispatcher-servlet.xml'nizi gösterin. –

cevap

6

Sizin @Repository kaldırdı varlık değildir <context:component-scan base-package="controller" /> bize gösteriyor şey tarafından giderek (taranmış). Ama her sınıf için paketleri görmemiz gerekecek. Spring, @Service, @Controller, @Repository ve @Component için hangi paketlerin görüneceğini size anlatmak için size bağlıdır.

tarama ilkbaharda nasıl çalıştığını bileşeni göz at.

+0

Sadece paket yapısını gördük bunu ' ', ' olarak ayarlandı ve Repository sınıflarınızı almalı. – ebell

+0

Evet ben de teşekkür hata dissapeared bulundu, ancak ben hala ile başlar istisnalar alıyorum: org.springframework.beans.factory.BeanCreationException: Hata 'userController' adıyla fasulye oluşturma: autowired bağımlılıkları enjeksiyonu başarısız; iç içe istisna ... –

+0

Kontrolörünüzü, sorunun nerede olduğu gibi görmesi gerekiyor. Ayrıca istisna yığını izleme yardımcı olacaktır. – ebell

0

baskı fasulye önce @Autowired baskı yapmayın. aksi durumda, ... tipi yok fasulye @Autowired private ProjectRepository projectRepository;

İlgili konular