第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

appCtx 中的多個事務(wù)遇到 NoUniqueBeanDefinitionException

appCtx 中的多個事務(wù)遇到 NoUniqueBeanDefinitionException

桃花長相依 2021-11-24 18:24:54
我正在研究基于 Spring MVC 的 Web 應(yīng)用程序,其中有兩個數(shù)據(jù)源,我需要維護(hù)兩個事務(wù)**DataSourceTransactionManager**,我什么也沒做,只是復(fù)制了我的EXISTING Txn交易片段并根據(jù)其他數(shù)據(jù)源對其進(jìn)行了修改,請查看我的應(yīng)用程序-ctx.xml<!----- EXISTING Txn-------->     <bean id="transactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">            <property name="dataSource" ref="dataSource" />        </bean>      <!----- NEWLY ADDED Txn-------->           <bean id="erptransactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">            <property name="dataSource" ref="dataSourcePayroll" />        </bean> 現(xiàn)在是服務(wù)類,正是我需要使用的地方。package com.awzpact.prayas.service;import com.awzpact.prayas.dao.HRMSPickSalaryDataDAO;import com.awzpact.uam.domain.SalaryDetailReport;import com.awzpact.uam.domain.Userdetail;import com.awzpact.uam.exceptions.MyExceptionHandler;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.stereotype.Service;import org.springframework.transaction.TransactionDefinition;import org.springframework.transaction.TransactionStatus;import org.springframework.transaction.support.DefaultTransactionDefinition;/** * * @author jack */@Servicepublic class NewPayrollService {    final TransactionDefinition erpTxnDefination = new DefaultTransactionDefinition();    final TransactionDefinition prayasTxnDefination = new DefaultTransactionDefinition();    final int BATCH_SIZE = 500;
查看完整描述

2 回答

?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個贊

其中一種方法是指定 bean 的名稱


<bean id="transactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager" name="oldOne">

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


        </bean> 

     <!----- NEWLY ADDED Txn-------->   

        <bean id="erptransactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager" name="newOne">

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

        </bean> 

然后使用限定符


package com.awzpact.prayas.service;


import com.awzpact.prayas.dao.HRMSPickSalaryDataDAO;

import com.awzpact.uam.domain.SalaryDetailReport;

import com.awzpact.uam.domain.Userdetail;

import com.awzpact.uam.exceptions.MyExceptionHandler;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import org.springframework.stereotype.Service;

import org.springframework.transaction.TransactionDefinition;

import org.springframework.transaction.TransactionStatus;

import org.springframework.transaction.support.DefaultTransactionDefinition;


/**

 *

 * @author jack

 */

@Service

public class NewPayrollService {


    final TransactionDefinition erpTxnDefination = new DefaultTransactionDefinition();

    final TransactionDefinition prayasTxnDefination = new DefaultTransactionDefinition();

    final int BATCH_SIZE = 500;


    public void getSalarayData(final String yearMonth, final String regionId, final String circleId, final Userdetail loginUser) {

        final String tableSuffix = yearMonth.substring(4, 6) + yearMonth.substring(0, 4);

        final TransactionStatus erpTransaction = erpTransactionManager.getTransaction(erpTxnDefination);

        try {

            List<SalaryDetailReport> list = hRMSPickSalaryDataDAO.findAll(yearMonth, regionId, circleId);

        } catch (Exception e) {

        }

        final TransactionStatus prayasTransaction = prayasTransactionManager.getTransaction(prayasTxnDefination);


    }


    @Autowired

    @Qualifier("oldOne")

    DataSourceTransactionManager prayasTransactionManager;



    @Autowired

    @Qualifier("newOne")

    DataSourceTransactionManager erpTransactionManager;


    @Autowired

    HRMSPickSalaryDataDAO hRMSPickSalaryDataDAO;

}


查看完整回答
反對 回復(fù) 2021-11-24
?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個贊

問題是您在 bean 定義中獲得了不同的 bean id,并且您正在使用具有不同名稱的該屬性。因此 Spring 容器無法識別分配給哪個 beanprayasTransactionManager 和erpTransactionManager..


解決方案是對用作屬性名稱的 bean 定義使用相同的 bean id。在你的情況下:


<!----- EXISTING Txn-------->

 <bean id="prayasTransactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

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


    </bean> 

 <!----- NEWLY ADDED Txn-------->   

    <bean id="erpTransactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

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

    </bean>

或者像這樣使用你的舊代碼。


  @Autowired

@Qualifier("transactionManager")

DataSourceTransactionManager prayasTransactionManager;


@Autowired

@Qualifier("erptransactionManager")

DataSourceTransactionManager erpTransactionManager;

PS:給出 bean id 和屬性名稱(依賴項(xiàng))的最佳做法是使用帶有有意義名稱的駝峰命名法。


查看完整回答
反對 回復(fù) 2021-11-24
  • 2 回答
  • 0 關(guān)注
  • 258 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號