Git Product home page Git Product logo

Comments (3)

ttddyy avatar ttddyy commented on June 21, 2024

I'm not quite understanding your configuration layout vs what you are trying to achieve.
Since you have a @Bean only on the actualDataSource and other datasources are created as non-beans and stashed into the TransactionRoutingDataSource, they are not exposed to outside.
Also, the datasource proxy is created in the constructor of ProxyDataSourceInterceptor. So, the proxy only knows the interactions on the TransactionRoutingDataSource instance and it does not know about the internal of the TransactionRoutingDataSource instance.

To achieve what you want, by my guess, create datasource proxies for the readWriteDataSource() and readOnlyDataSource() instances instead of the TransactionRoutingDataSource(actualDataSource). Then, you can set different names on each datasource instance.

from datasource-proxy.

agdt3 avatar agdt3 commented on June 21, 2024

@ttddyy Thank you for your help! I think that's exactly the issue: all the data sources sit behind TransactionRoutingDataSource and are routed to on the basis of the readOnly param inside the Transaction annotation. My hope was that there was some way of configuring the internal data sources so it would be easier to log which DataSource was being called at which time. I guess the question is, if I expose each of the component datasources as Beans, would the proxy be created before they're added to TransactionRoutingDataSource and thus allow me to keep track of them separately?

from datasource-proxy.

ttddyy avatar ttddyy commented on June 21, 2024

One way you can do is that the DataSource instances returned from readWriteDataSource and readOnlyDataSource methods are currently HikariDataSource instances, but you can wrap each of them with a proxy with different names.
In that case, those instances don't need to be exposed as beans since having multiple DataSource beans may require other places to change.
Of course, you can expose those datasources as beans and make proxy of them by bean post processor, for example.

How you do is up to your preference, but as long as the actual datasource instances are proxied rather than the TransactionRoutingDataSource instance, each of them can have different names/configurations.

from datasource-proxy.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.