java - org.springframework.beans.factory.UnsatisfiedDependencyException : Unsatisfied dependency expressed through method 'anyMethodName' parameter 0:

标签 java spring hibernate maven spring-mvc

我不知道这个设置有什么问题......

广告:

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userDao': Unsatisfied dependency expressed through method 'anyMethodName' parameter 0: Error creating bean with name 'sessionFactory' defined in class path resource [hbn-config.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [hbn-config.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V
juil. 03, 2016 6:56:50 PM org.springframework.cache.ehcache.EhCacheManagerFactoryBean destroy
INFOS: Shutting down EhCache CacheManager
juil. 03, 2016 6:56:50 PM org.springframework.web.context.ContextLoader initWebApplicationContext
GRAVE: Context initialization failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userDao': Unsatisfied dependency expressed through method 'anyMethodName' parameter 0: Error creating bean with name 'sessionFactory' defined in class path resource [hbn-config.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [hbn-config.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:651)

用户道:

@Repository
public class UserDao extends AbstractDao<User> {
private static Logger LOG = LoggerFactory.getLogger(UserDao.class);

public UserDao() {
}

public List<User> findAllUsers() {
    Query q = getHibernateTemplate()
            .getSessionFactory()
            .openSession()
            .createQuery("from " + entityClass.getSimpleName());

    List<User> list = q.list();

    return list;
}

抽象道:

public abstract class AbstractDao<E> extends CustomHibernateDaoSupport {

protected final Class<E> entityClass;

@SuppressWarnings("unchecked")
public AbstractDao() {
    entityClass = (Class<E>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}

protected HibernateTemplate getOneResultTemplate() {
    HibernateTemplate oneResultTemplate = createHibernateTemplate(getSessionFactory());
    oneResultTemplate.setMaxResults(1);
    return oneResultTemplate;
}

protected Query createQuery(String queryString) {
    return getSessionFactory().getCurrentSession().createQuery(queryString);
}

@Transactional(readOnly = false)
public void save(E entity) {
    getHibernateTemplate().save(entity);
}

@Transactional(readOnly = false)
public void saveOrUpdate(E entity) {
    getHibernateTemplate().saveOrUpdate(entity);
}

@Transactional(readOnly = false)
public void update(E entity) {
    getHibernateTemplate().update(entity);
}

@Transactional(readOnly = false)
public void delete(E entity) {
    getHibernateTemplate().delete(entity);
}

@SuppressWarnings("unchecked")
public List<E> list() {
    Query q = getHibernateTemplate().getSessionFactory().openSession()
            .createQuery("from " + entityClass.getSimpleName());
    return q.list();
}

自定义HibernateDaoSupport:

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

网络应用上下文:

<?xml version="1.0" encoding="UTF-8"?>...

<cache:annotation-driven />

<context:property-placeholder location="classpath:app.properties" />

<!-- Auto scan the components -->
<context:annotation-config />
<context:component-scan base-package="com.example" />

<bean id="applicationContextHolder"
    class="com.example.myproject.core.util.ApplicationContextHolder" />

<import resource="classpath:hbn-config.xml" />
<import resource="classpath:cache-config.xml" />

hbn 配置:

<?xml version="1.0" encoding="UTF-8"?>...

    <!-- Hibernate session factory -->
    <tx:annotation-driven />

    <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>

    <!-- Hibernate session factory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
                <prop key="hibernate.max_fetch_depth">${hibernate.max_fetch_depth}</prop>
                <prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size}</prop>
                <prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>
                <prop key="hibernate.temp.use_jdbc_metadata_defaults">${hibernate.temp.use_jdbc_metadata_defaults}</prop>
                <prop key="hibernate.order_inserts">${hibernate.order_inserts}</prop>
                <prop key="hibernate.order_updates">${hibernate.order_updates}</prop>
            </props>
        </property>
        <property name="packagesToScan" value="com.example.myproject.core.model" />
    </bean>

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


    <aop:config>
        <aop:pointcut id="serviceMethods"
            expression="execution(*com.example.myproject.core.dao.*Dao.*(..))" />
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods" />
    </aop:config>

    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*" propagation="REQUIRED" read-only="false" />
            <!-- <tx:method name="save*" propagation="REQUIRED" read-only="false" 
                /> -->
            <!-- <tx:method name="add*" propagation="REQUIRED" read-only="false" /> -->
            <!-- <tx:method name="update*" propagation="REQUIRED" read-only="false" 
                /> -->
            <!-- <tx:method name="delete*" propagation="REQUIRED" read-only="false" 
                /> -->
            <!-- <tx:method name="export*" propagation="REQUIRED" read-only="false" 
                /> -->
            <!-- <tx:method name="import*" propagation="REQUIRED" read-only="false" 
                /> -->
        </tx:attributes>
    </tx:advice>

</beans>

最佳答案

类路径中的 jboss-logging 版本与 Hibernate 期望的版本不同。

关于java - org.springframework.beans.factory.UnsatisfiedDependencyException : Unsatisfied dependency expressed through method 'anyMethodName' parameter 0:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38172599/

相关文章:

java - 循环依赖、递归类

java - StringTemplate - 如何遍历列表中的列表?

mysql - Spring 3 - Hibernate 3 - 查询多个 MySQL 数据库

java - 如何使用 Hibernate 表示遗留数据库?

java - 如何在 hibernate 中选择和更新相同的对象?非法尝试将代理与两个打开的 session 关联

hibernate - 不为null的条件子查询

java - Wildfly-9.0.2.Final 中的 ClassNotFoundException : javax. xml.datatype.DatatypeFactory

java - com.sun.mail.smtp.SMTPAddressFailedException : Recipient address rejected: Authentication Required

java - Spring异步任务返回Future

java - 如何替换@MockBean?