我正在使用tomcat-jdbc
池默認spring-boot
設置。每次在池中建立新的JDBC連接並在第一次使用之前,我想運行一些自定義Java代碼。如何做到這一點,如果有幾種可能性,哪一種最好?spring/tomcat-jdbc池 - 新的連接監聽器
2
A
回答
1
嗯,我能想到的兩個選項:
創建您自己的包裝類 - 通過擴展Tomcat的
DataSource
類或實現Java的DataSource
接口,並委託給包裹DataSource
- 然後添加邏輯您想要所需的方法並通過手動實例化您的tomcat-jdbc
DataSource
(有關如何操作的示例,請參閱DataSourceConfiguration.Tomcat class)並將其包裝到您的課程中,從而在類別@Configuration
中註冊bean。創建一個方面並使用Spring的AOP支持截取對
getConnection
的調用。由於DataSource
類是使用javax包,我想你將不得不使用的AspectJ,以及一些例子參見this link
我的建議是去與第一個選項,它應該給你頭痛少,這裏有一個小例子,你如何定義你的包裝器bean:
@Bean
public DataSource dataSource(DataSourceProperties properties) {
return new MyDataSourceWrapper(tomcatDataSourceFrom(properties));
}
private org.apache.tomcat.jdbc.pool.DataSource tomcatDataSourceFrom(
DataSourceProperties properties) {
// manual instantiation like in DataSourceConfiguration.Tomcat class
}
1
要延長已接受的答案,你可以使用Spring AOP 不完整的AspectJ,如果您使用的切入點,因爲這一個:
@AfterReturning(pointcut = "execution(* org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection())")
public void afterConnectionEstablished() {
...
}
相關問題
- 1. Wi-Fi連接監聽器
- 2. JDBC連接池監控GlassFish
- 3. 監視骨骼連接池
- 4. 使用REST連接監聽器?
- 5. 郵件監聽器2 - 連接結束
- 6. Wifi連接 - 斷開監聽器
- 7. Oracle:拒絕連接監聽器錯誤
- 8. Rabbitmq監聽UDP連接
- 9. 將JMS監聽器重新連接到JBossMQ
- 10. 套接字監聽和連接
- 11. MySQL .NET連接器中的連接池
- 12. 如何在IIS中監視.NET的連接池MySQL數據連接器
- 13. QTcpServer如何真正監聽連接
- 14. mysql .net連接器連接池浪費
- 15. 簡單的TCP監聽器線程爲Android ..我沒有連接
- 16. 我們是否有iOS內置的藍牙連接監聽器?
- 17. Xamarin.Forms中的互聯網連接監聽器
- 18. Windows Mobile中的網絡連接監聽器
- 19. 全球網絡連接監聽器的策略
- 20. 監聽器拒絕與以下錯誤的連接:ORA-12514
- 21. C#套接字監聽器(服務器)
- 22. TCP監聽器停止監聽
- 23. Laravel監聽器監聽多個事件
- 24. JDBC連接池不能重新連接tomcat中的連接
- 25. CommunicationState監聽器?
- 26. c中的套接字監聽器#
- 27. 更新監聽器喜歡Android的Gmail
- 28. Recyclerview點擊監聽器的更新值
- 29. 器件監聽器
- 30. PreparedStatement的池連接池