2015-04-27 3 views
0

Я получаю довольно много ошибок, возникающих при попытке доступа к моему приложению через браузер. Ошибки:не удалось создать autowire/not be bean

Не удалось autowire метод: общественный вакуум com.ProjectOne.Util.CustomHibernateDaoSupport.anyMethodName (org.hibernate.SessionFactory); вложенной исключение org.springframework.beans.factory.NoSuchBeanDefinitionException: Нет квалификационная рожкового типа [org.hibernate.SessionFactory] не найдено для зависимости: ожидается, по крайней мере, 1

Не удалось autowire метод: общественного недействительными ком .ProjectOne.Util.CustomHibernateDaoSupport.anyMethodName (org.hibernate.SessionFactory); вложенного исключения org.springframework.beans.factory.NoSuchBeanDefinitionException: Нет квалификационных рожковый типа [org.hibernate.SessionFactory] не найдено для зависимостей: ожидаются, по крайней мере, 1 боба, который квалифицируется как autowire кандидата на эту зависимость. Зависимость от аннотаций: {}

модель счета

@Entity 
@Table(name = "account") 
public class Account { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long id; 

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

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

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = 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; 
    } 

} 

AccountService

package com.ProjectOne.Account.Service; 

import com.ProjectOne.Account.Model.Account; 

public interface accountService { 

    public Account retrieveAccount(Long id); 
} 

accountServiceImpl

@Service("accountService") 
public class accountServiceImpl implements accountService { 

    @Autowired 
    private accountDAO accountDAO; 

    @Override 
    public Account retrieveAccount(Long id) { 
     return accountDAO.retrieveAccount(id); 
    } 
} 

accountDAO

package com.ProjectOne.Account.DAO; 

import com.ProjectOne.Account.Model.Account; 


public interface accountDAO { 

    public Account retrieveAccount(Long id); 
} 

accountDAOImpl

@Repository("accountDAO") 
public class accountDAOImpl extends CustomHibernateDaoSupport implements accountDAO { 

    public Account retrieveAccount(Long id) { 

     return null; 
    } 

} 

CustomDaoHibernateSupport

public abstract class CustomHibernateDaoSupport extends HibernateDaoSupport 
{  
    @Autowired 
    public void anyMethodName(SessionFactory sessionFactory) 
    { 
     setSessionFactory(sessionFactory); 
    } 
} 

DataSource.xml

<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-2.5.xsd"> 

<bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location"> 
     <value>properties/database.properties</value> 
    </property> 
</bean> 

<bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${jdbc.driverClassName}" /> 
    <property name="url" value="${jdbc.url}" /> 
    <property name="username" value="${jdbc.username}" /> 
    <property name="password" value="${jdbc.password}" /> 
</bean> 

</beans> 

hibernate.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" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 

<!-- Hibernate session factory --> 
<bean id="sessionFactory" 
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 

    <property name="dataSource"> 
     <ref bean="dataSource"/> 
    </property> 

    <property name="hibernateProperties"> 
     <props> 
     <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
     <prop key="hibernate.show_sql">true</prop> 
     </props> 
    </property> 

    <property name="annotatedClasses"> 
    <list> 
     <value>com.ProjectOne.Account.Account</value> 
    </list> 
    </property> 

    </bean> 
</beans> 

StackTrace:

INFO: Initializing Spring FrameworkServlet 'DispatcherServlet' 
27 Apr 2015 13:59:04 ERROR DispatcherServlet - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'accountDAO': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.ProjectOne.Util.CustomHibernateDaoSupport.anyMethodName(org.hibernate.SessionFactory); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543) 
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484) 
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1241) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1154) 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:534) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) 
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.ProjectOne.Util.CustomHibernateDaoSupport.anyMethodName(org.hibernate.SessionFactory); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:649) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331) 
    ... 37 more 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:606) 
    ... 39 more 
+0

Опубликовать полную стекцию исключения. – Chaitanya

+0

См. 'Private accountDAO accountDAO;' строка в классе 'accountServiceImpl', имя экземпляра объекта совпадает с именем интерфейса. Почему это так? * Почему бы вам не следовать правилам именования Java, чтобы избежать путаницы? * – OO7

+0

Проверьте [Spring + Hibernate example] (http://www.mkyong.com/spring/maven-spring-hibernate-annotation-mysql-example/) на получить более четкое представление о том, как использовать класс «HibernateDaoSupport». Измените код ur и следуйте стандартам кодирования при написании кода bcoz, очень сложно понять такой уродливый код. – OO7

ответ

0

Это обычно происходит, когда вы пытаетесь autowire ссылку, в вашем случае SessionFactory, в несколько бобов, которые имеют тот же тип. Поэтому попробуйте изменить метод следующим образом:

@Autowired 
public void anyMethodName(@Qualifier("sessionFactory")SessionFactory sessionFactory){ 
    setSessionFactory(sessionFactory); 
} 
+0

Ошибка говорит: «Нет квалификационного компонента типа [org.hibernate.SessionFactory], найденный для зависимости: ожидается, что по крайней мере 1' поэтому весна не может найти компонент типа 'SessionFactory', даже после использования Qualifier, я думаю, Spring не может вводить зависимость. – Chaitanya

+0

thecoshman .. это все равно дает мне ту же ошибку. – Shaun

+0

@Shaun, обновите вопрос с помощью полной stacktrace исключения, чтобы лучше понять проблему. – Chaitanya