Comments (3)
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.
@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.
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)
- Properly call before/after method callback on `ProxyDataSource#getConnection`
- module-info.java HOT 2
- Add `ProxyDataSourceBuilder#buildProxy()`
- Add `ProxyJdbcObject#getProxyConfig`
- Connection is not returned to the pool if connection.getTransactionIsolation() throws an exception HOT 1
- No handling of equals method for two connection object HOT 5
- Possibility of intercepting method getConnection() if exception is thrown by original DataSource HOT 2
- equals method of ProxyLogicSupport class not working as expected. HOT 1
- Expose proxy object to method callback
- Reduce transaction Isolation level queries in ProxyDataSource with HikariCP and PostgreSQL HOT 2
- Use monotonic time to measure elapsed time in SystemStopWatch
- Record number of result set rows in `DataSourceQueryCountListener` HOT 2
- Make "AbstractQueryLogEntryCreator#chompIfEndWith" defensive for empty string
- Micrometer support HOT 2
- Got number of type instead null HOT 1
- Add SQL Format Option HOT 1
- Proxying generated keys not working with MS-SQL server data source HOT 4
- Document about Jakarta namespace support HOT 3
- Support Quarkus
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from datasource-proxy.