2012-04-26 4 views
1

나는 봄에 비교적 새로운 것에 대해 사과드립니다. 나는이hibernate3와 spring3을 가진 autowiring sessionbean

public interface UserDAO { 
    public User getById(Long id); 
} 

org.assessme.com.dao.UserDAO.java를 사용

@Repository 
public class UserDAOImpl implements UserDAO{ 


    @Autowired 
    private SessionFactory sessionFactory; 


    @Transactional 
    public User getById(Long id) { 
     return (User) sessionFactory.getCurrentSession().load(User.class, id); 
    } 

} 

...

org.assessme.com.dao.UserDAOImpl.java 다음 코드가 내 프로그램을 실행하려고하면 나는 ... 얻을

ERROR: org.springframework.web.servlet.DispatcherServlet - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDAOImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory org.assessme.com.bean.UserDAOImpl.sessionFactory; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508) 
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449) 
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5015) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5302) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 

내 spring.xml은 ...

<?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:tx="http://www.springframework.org/schema/tx" 
     xmlns:context="http://www.springframework.org/schema/context" 

     xsi:schemaLocation= 
     "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://localhost/db" /> 
     <property name="username" value="username" /> 
     <property name="password" value="password" /> 
    </bean> 

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="annotatedClasses"> 
     <list> 
      <value>org.assessme.com.entity.User</value> 
     </list> 
    </property> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="packagesToScan" value="data" /> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop> 
       <prop key="hibernate.current_session_context_class">thread</prop> 
       <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop> 
       <prop key="hibernate.show_sql">true</prop> 
       <prop key="hibernate.hbm2ddl.auto">update</prop> 
      </props> 
     </property> 
    </bean> 

    <context:component-scan base-package="org.assessme" /> 

    <tx:annotation-driven/> 

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 

</beans> 

내가 잘못하고있는 것을 누구든지 볼 수 있습니까? 나는 sessionFactory를 autowire하는 방법을 잘 모르겠습니다.

내 엔티티 클래스는 다음과 같다

...

org.assessme.com.entity.User.java

@Entity 
@Table(name = "users") 
public class User { 

    @Column(name = "firstName") 
    private String firstName; 

    @Column(name = "lastName") 
    private String lastName; 

    @Column(name = "email") 
    private String email; 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(name = "id") 
    private long id; 


    public String getFirstName() { 
     return firstName; 
    } 
    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 
    public String getLastName() { 
     return lastName; 
    } 
    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
    public String getEmail() { 
     return email; 
    } 
    public void setEmail(String email) { 
     this.email = email; 
    } 
    public long getId() { 
     return id; 
    } 
    public void setId(long id) { 
     this.id = id; 
    } 
} 

감사합니다,

나는에 의해 springmvc이 사용하고 way, 이것이 servlet-context.xml에 있어야합니까?

NoSuchBeanDefinitionException: No matching bean of type [org.hibernate.SessionFactory] 

문제는 org.hibernate.SessionFactory 인터페이스를 구현하지 않습니다 AnnotationSessionFactoryBean입니다 :

+0

spring.xml에 \t 을 추가하려고합니다 ... –

답변

0

다음은 오류 메시지의 관련 부분이다. 그 중 하나를 얻으려면 buildSessionFactory 방법으로 전화해야합니다.

+0

나는 같은 문제를 안고 있습니다. 어디에서 코드를 호출해야합니까? 또한 나는 여러 사람을 보았고 그들 중 아무도 이것을 어디에서나 부르거나 언급하지 않았습니다. 나는 그 모든 것을 실행하지 않는다고 가정해야합니까? 예 : http://java.dzone.com/articles/persistence-layer-spring-31 –

관련 문제