当前位置: 首页 > 知识库问答 >
问题:

没有名为'transactionManager'的bean可用:

陶宜民
2023-03-14

请求处理失败;嵌套的异常是org。springframework。豆。工厂NoSuchBeanDefinitionException:没有名为“transactionManager”的bean可用:没有为限定符“transactionManager”找到匹配的transactionManager bean-既没有限定符匹配,也没有bean名称匹配!

客户请求。JAVA

package com.shadow.springdemo.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.shadow.springdemo.entity.Customer;

@Repository
public class CustomerDAOImpl implements CustomerDAO {

// need to inject the session factory
@Autowired
private SessionFactory sessionFactory;
        
@Override
@Transactional
public List<Customer> getCustomers() {
    
    // get the current hibernate session
    Session currentSession = sessionFactory.getCurrentSession();
            
    // create a query
    Query<Customer> theQuery = 
            currentSession.createQuery("from Customer", Customer.class);
    
    // execute query and get result list
    List<Customer> customers = theQuery.getResultList();
            
    // return the results       
    return customers;
}

}

客户控制器

        package com.shadow.springdemo.controller;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.shadow.springdemo.dao.CustomerDAO;
    import com.shadow.springdemo.entity.Customer;
    
    @Controller
    @RequestMapping("/customer")
    public class CustomerController {
        
        // need to inject the customer dao
        @Autowired(required = true)
        private CustomerDAO customerDAO;
        
        @RequestMapping("/list")
        public String listcustomer(Model theModel) {
            
            //get customer from dao
            List<Customer> theCustomers  = customerDAO.getCustomers();
            
            //add customer to model
            theModel.addAttribute("customers", theCustomers);
            
            return "list-customer";
        }
    }

顾客道

        package com.shadow.springdemo.dao;
    
    import java.util.List;
    
    import com.shadow.springdemo.entity.Customer;
    
    public interface CustomerDAO {
        
        public List<Customer> getCustomers();
    }

spring mvc crud演示servlet。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:context="http://www.springframework.org/schema/context"
            xmlns:tx="http://www.springframework.org/schema/tx"
            xmlns:mvc="http://www.springframework.org/schema/mvc"
            xsi:schemaLocation="http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
          http://www.springframework.org/schema/aop 
          http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
          http://www.springframework.org/schema/context 
          http://www.springframework.org/schema/context/spring-context-2.5.xsd
          http://www.springframework.org/schema/tx 
          http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
        
            <!-- Add support for component scanning -->
            <context:component-scan base-package="com.shadow.springdemo" />
        
            <!-- Add support for conversion, formatting and validation support -->
            <tx:annotation-driven/>
        
            <!-- Define Spring MVC view resolver -->
            <bean
                class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <property name="prefix" value="/WEB-INF/view/" />
                <property name="suffix" value=".jsp" />
            </bean>
        
            <!-- Step 1: Define Database DataSource / connection pool -->
            <bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
                  destroy-method="close">
                <property name="driverClass" value="com.mysql.cj.jdbc.Driver" />
                <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/web_customer_tracker?useSSL=false&amp;serverTimezone=UTC" />
                <property name="user" value="student" />
                <property name="password" value="student" /> 
        
                <!-- these are connection pool properties for C3P0 -->
                <property name="minPoolSize" value="5" />
                <property name="maxPoolSize" value="20" />
                <property name="maxIdleTime" value="30000" />
            </bean>  
            
            <!-- Step 2: Setup Hibernate session factory -->
            <bean id="sessionFactory"
                class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
                <property name="dataSource" ref="myDataSource" />
                <property name="packagesToScan" value="com.shadow.springdemo.entity" />
                <property name="hibernateProperties">
                   <props>
                      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                      <prop key="hibernate.show_sql">true</prop>
                   </props>
                </property>
           </bean>    
        
            <!-- Step 3: Setup Hibernate transaction manager -->
            <bean id="myTransactionManager"
                    class="org.springframework.orm.hibernate5.HibernateTransactionManager">
                <property name="sessionFactory" ref="sessionFactory"/>
            </bean>
            
            <!-- Step 4: Enable configuration of transactional behavior based on annotations -->
            <tx:annotation-driven transaction-manager="myTransactionManager" />
        
        </beans>
        

网状物xml

            <?xml version="1.0" encoding="UTF-8"?>
        <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
          <display-name>spring-mvc-crud-demo</display-name>
        
          <absolute-ordering />
        
          <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
            <welcome-file>index.html</welcome-file>
          </welcome-file-list>
        
          <servlet>
            <servlet-name>dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>/WEB-INF/spring-mvc-crud-demo-servlet.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
          </servlet>
          
          <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>/</url-pattern>
          </servlet-mapping>
        </web-app>

共有1个答案

翟越
2023-03-14

参考Spring文档

这两个示例之间的一个小区别在于TransactionManager bean的命名:在@bean的情况下,名称是“txManager”(根据方法的名称);在XML示例中,名称为“transactionManager”。这个

因此,在URXML中,将bean myTransaction重命名为transactionManager

        <bean id="transactionManager"
                class="org.springframework.orm.hibernate5.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"/>
        </bean>
        
        <!-- Step 4: Enable configuration of transactional behavior based on annotations -->
        <tx:annotation-driven transaction-manager="transactionManager" />
 类似资料:
  • 问题内容: 我已经用实体管理器配置了两个持久性单元,如下所示: 然后,我将事务管理器配置为 我最初只有一个配置,它被称为“ transactionManager”。Addint一个附加的持久性单元似乎会生成错误。我不明白的一件事,如果我配置了两个持久性单元(每个持久性单元用于一个单独的数据库),是否还需要为每个数据源配置一个单独的实体管理器和一个事务管理器? 我得到的错误如下所示:(我搜索了所有文

  • 当我尝试在junit测试类中加载配置文件时,在注入数据源时出现以下错误: 组织。springframework。豆。工厂NoSuchBeanDefinitionException:在组织中未定义名为“transactionManager”的bean。springframework。豆。工厂支持DefaultListableBeanFactory。位于org的getBeanDefinition(De

  • 我创建了一个Spring Boot应用程序,并使用我想要执行的方法创建了一个类。将项目部署为war文件时,我从stacktrac中获取错误。我想从类TennisExecitor中运行该方法。 没有名为'entityManagerFactory'的bean可用 创建名为'(内部bean)#366583f9'的bean时出错:设置构造函数参数时无法解析对bean'entityManagerFactor

  • 当我试图使用spring代码创建关系时,我得到了事务管理器错误。我正在我的项目中使用Mysql和Neo4j数据库。我尝试了不同的解决方法,但都解决不了。 noSuchBeanDefinitionException:没有名为“Transaction Manager”的bean可用:没有为限定符“Transaction Manager”找到匹配的PlatformTransactionManager b

  • 我在构建时遇到了这个错误。我在这里参考了其他的答案,但没有一个对我有效。 应用程序.属性 存储库: 实体: 和pom.xml 和主类(spring boot应用程序) 我从.m2目录中删除了所有文件夹。再次运行mvn clean install。得到了同样的错误。服务类自动连接存储库。控制器使用@RestController注释。 而这正是确切的原因: 原因:org.springframework

  • 我正在尝试开发一个新的批与Spring批和jpa。当我尝试启动它时,我收到错误"嵌套异常是org.springframework.beans.factory.NoSuchBean定义异常:没有名为'entityManagerFactory'可用的bean" 我的pom.xml 我的数据源配置类: 我的存储库类: 我的实体类: pplication.properties: 如果我尝试启动应用程序,我