Ссылаться на бин из разных модулей в проекте?

У меня есть база данных, объявленная в модуле. У меня есть основной модуль бизнес-логики, в котором мне нужно представить базу данных. У меня есть база данных, определенная как единичная и как служба. однако мне также необходимо получить доступ к базе данных из модуля бизнес-логики Core. Служба работает, но я не могу ссылаться на базу данных tkn из ядра.

Мне нужно сослаться на базу данных TKN, определенную в модуле fleet.mt1.dataserviceimpl в модуле fleet.mt1.core.

интересно как это сделать? если есть способ в верблюжий проект / весна, которая может сделать это???

fleet.mt1.dataserviceimpl

    <cm:property-placeholder persistent-id="com.ge.digital.fleet.dataservice.impl"/>
    <!-- Ensure that only one instance of a class pdxDb is created -->
    <!-- Provide a global point of access to the object -->
    <bean class="com.ge.digital.fleet.dataservice.impl.db.PDXDatabase"
        id="pdxDb" scope="singleton"/>
    <bean class="com.ge.digital.fleet.dataservice.impl.db.TKNDatabase"
        id="tknDb" scope="singleton"/>
    <!-- PDX Data Service Implementation -->
    <bean
        class="com.ge.digital.fleet.dataservice.impl.PDXDataServiceImpl" id="pdxDataService">
        <property name="pdxDatabase" ref="pdxDb"/>
    </bean>
    <bean
        class="com.ge.digital.fleet.dataservice.impl.TKNDataServiceImpl" id="tknDataService">
        <property name="tknDatabase" ref="tknDb"/>
    </bean>
    <!-- PDX Data Service Registration -->
    <service depends-on="pdxDb"
        interface="com.ge.digital.fleet.dataservice.PDXDataService" ref="pdxDataService"/>
    <service depends-on="tknDb"
        interface="com.ge.digital.fleet.dataservice.TKNDataService" ref="tknDataService"/>
    <bean
        class="com.ge.digital.fleet.dataservice.impl.processor.ReplicatedDataProcessor" id="replicatedDataProcessor">
        <property name="pdxDatabase" ref="pdxDb"/>
    </bean>
    <bean
        class="com.ge.digital.fleet.dataservice.impl.filter.FTPFileFilter" id="ftpFileFilter"/>
    <!-- properties found in com.ge.digital.fleet.dataservice.impl.cfg under etc -->
    <bean
        class="com.ge.digital.fleet.dataservice.impl.route.ReplicatedDataRouteBuilder"
        depends-on="ftpFileFilter" id="replicatedDataRouteBuilder">
        <property name="transportSftp" value="${transportSftp}"/>
        <property name="transportFs" value="${transportFs}"/>
        <property name="username" value="${username}"/>
        <property name="host" value="${host}"/>
        <property name="port" value="${port}"/>
        <property name="pathSftp" value="${pathSftp}"/>
        <property name="pathFs" value="${pathFs}"/>
        <property name="password" value="${password}"/>
        <property name="moveToPath" value="${moveToPath}"/>
        <property name="fileArchive" value="${fileArchive}"/>
        <property name="readLockFile" value="${readLockFile}"/>
        <property name="ftpFileFilter" value="ftpFileFilter"/>
    </bean>
    <camelContext id="com.ge.digital.fleet.dataServiceImplCamelContext"
        trace="false" xmlns="http://camel.apache.org/schema/blueprint">
        <routeBuilder ref="replicatedDataRouteBuilder"/>
    </camelContext>
</blueprint>

fleet.mt1.core

<reference id="pdxDataService" interface="com.ge.digital.fleet.dataservice.PDXDataService"/>
<bean
    class="com.ge.digital.fleet.core.processors.DbAvailableProcessor" id="dbAvailableProcessor">
    <property name="dataService" ref="pdxDataService"/>
</bean>

<reference id="tknDataService" interface="com.ge.digital.fleet.dataservice.TKNDataService"/>
<bean class="com.ge.digital.fleet.dataservice.impl.db.TKNDatabase"
        id="tknDb" scope="singleton"/>
    <bean
        class="com.ge.digital.fleet.core.processors.AccessKeyMarsheler" id="accessKeyMarsheler">
        <property name="tknDatabase" ref="tknDb"/>
    </bean>

ЭТО НЕПРАВИЛЬНО, И Я ЗНАЮ ЭТО, ЭТО МОЯ ВОПРОС, как ИЛИ на это можно ссылаться в основном модуле?

<bean class="com.ge.digital.fleet.dataservice.impl.db.TKNDatabase"
        id="tknDb" scope="singleton"/>

спасибо за помощь! Я борюсь с этим. Я пробовал ссылаться на Бин, Класс, но, конечно, это Нелегальный синтаксис.

Я работаю над другим интерфейсом для службы, чтобы получить доступ к этому через модули, я надеюсь, что есть способ сделать это весной, в качестве ссылки или зависимости или чего-то еще.

1 ответ

Решение

В ожидании ответа, чтобы посмотреть, возможно ли это с помощью Spring, я продолжил и создал обертки для методов и интерфейса, он работает нормально, но я хотел бы знать, можно ли это сделать в Spring с помощью ссылки или чего-то еще. Мне нужно учиться и бункер на весну.

еще раз спасибо.

public class TKNDataServiceImpl implements TKNDataService {

    private static final Logger LOG = LoggerFactory.getLogger(TKNDataServiceImpl.class);

    private TKNDatabase tknDb = null;

    @Override
    public boolean isTKNDataServiceAvailable() {
        return tknDb.isAvailable();
    }

    @Override
    public TknLocator getTokenLocatorForCustomerKey(String custkey) throws TKNDataServiceUnavailableException,
            TKNDataServiceInvalidDataException {

        if (null != custkey) {

            final String token = tknDb.getAccessToken(custkey);
            Timestamp expiry = tknDb.getExpiry(custkey);
            LOG.info("ACCESS TOKEN: " + token);
            LOG.info("EXPIRY: " + expiry);
            TknLocator loc = new TknLocator();
            loc.setAccess_token(token);
            loc.setexpires_in(expiry);

            return loc;
        }

        return null;
    }

    @Override
    public boolean CustomerKeyExistsInTokenDb(String custkey) throws TKNDataServiceInvalidDataException,
            TKNDataServiceUnavailableException {

        boolean keyExists = tknDb.doesCustKeyExist(custkey);
        return keyExists;
    }

    @Override
    public void TknDbAddRow(String custkey, String access_token, int expires_in) { 
        if (null != custkey) {
            tknDb.addRow(custkey, access_token, expires_in);
        }
    }

    @Override
    public void TknReplicationComplete() { 
        tknDb.replicationComplete();
    }

    @Override
    public void TknDropRow(String custkey) { 
        if (null != custkey) {
            tknDb.dropRow(custkey);
        }
    }

    public Timestamp TknGetExpiry(String custkey) throws TKNDataServiceUnavailableException, 
                TKNDataServiceInvalidDataException {

        return(tknDb.getExpiry(custkey));
    }

    public String TknGetAccessToken(String custkey) throws TKNDataServiceUnavailableException,
            TKNDataServiceInvalidDataException {

        return(tknDb.getAccessToken(custkey));
    }


    public void settknDatabase(TKNDatabase tknDb) {
        this.tknDb = tknDb;
    }

}
Другие вопросы по тегам