1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.guice.datasource.druid;
17
18 import com.alibaba.druid.pool.DruidDataSource;
19 import com.google.inject.Inject;
20
21 import jakarta.inject.Named;
22 import jakarta.inject.Provider;
23
24 import java.sql.SQLException;
25 import java.util.Properties;
26
27 import javax.sql.DataSource;
28
29
30
31
32
33
34 public class DruidDataSourceProvider implements Provider<DataSource> {
35
36 DruidDataSource dataSource = new DruidDataSource();
37
38 @Inject
39 public void setDriverClassName(@Named("JDBC.driverClassName") final String driverClassName) {
40 dataSource.setDriverClassName(driverClassName);
41 }
42
43 @Inject
44 public void setUrl(@Named("JDBC.url") final String url) {
45 dataSource.setUrl(url);
46 }
47
48 @Inject
49 public void setUsername(@Named("JDBC.username") final String username) {
50 dataSource.setUsername(username);
51 }
52
53 @Inject
54 public void setPassword(@Named("JDBC.password") final String password) {
55 dataSource.setPassword(password);
56 }
57
58 @Inject(optional = true)
59 public void setDefaultAutoCommit(@Named("JDBC.autoCommit") final boolean defaultAutoCommit) {
60 dataSource.setDefaultAutoCommit(defaultAutoCommit);
61 }
62
63 @Inject(optional = true)
64 public void setDefaultReadOnly(@Named("JDBC.readOnly") final boolean defaultReadOnly) {
65 dataSource.setDefaultReadOnly(defaultReadOnly);
66 }
67
68 @Inject(optional = true)
69 public void setDefaultTransactionIsolation(
70 @Named("JDBC.transactionIsolation") final int defaultTransactionIsolation) {
71 dataSource.setDefaultTransactionIsolation(defaultTransactionIsolation);
72 }
73
74 @Inject(optional = true)
75 public void setDefaultCatalog(@Named("JDBC.catalog") final String defaultCatalog) {
76 dataSource.setDefaultCatalog(defaultCatalog);
77 }
78
79 @Inject(optional = true)
80 public void setMaxActive(@Named("JDBC.maxActive") final int maxActive) {
81 dataSource.setMaxActive(maxActive);
82 }
83
84 @Inject(optional = true)
85 public void setMinIdle(@Named("JDBC.minIdle") final int minIdle) {
86 dataSource.setMinIdle(minIdle);
87 }
88
89 @Inject(optional = true)
90 public void setInitialSize(@Named("JDBC.initialSize") final int initialSize) {
91 dataSource.setInitialSize(initialSize);
92 }
93
94 @Inject(optional = true)
95 public void setMaxWait(@Named("JDBC.maxWait") final long maxWait) {
96 dataSource.setMaxWait(maxWait);
97 }
98
99 @Inject(optional = true)
100 public void setTestOnBorrow(@Named("JDBC.testOnBorrow") final boolean testOnBorrow) {
101 dataSource.setTestOnBorrow(testOnBorrow);
102 }
103
104 @Inject(optional = true)
105 public void setTestOnReturn(@Named("JDBC.testOnReturn") final boolean testOnReturn) {
106 dataSource.setTestOnReturn(testOnReturn);
107 }
108
109 @Inject(optional = true)
110 public void setTimeBetweenEvictionRunsMillis(
111 @Named("JDBC.timeBetweenEvictionRunsMillis") final long timeBetweenEvictionRunsMillis) {
112 dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
113 }
114
115 @Inject(optional = true)
116 public void setMinEvictableIdleTimeMillis(
117 @Named("JDBC.minEvictableIdleTimeMillis") final long minEvictableIdleTimeMillis) {
118 dataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
119 }
120
121 @Inject(optional = true)
122 public void setTestWhileIdle(@Named("JDBC.testWhileIdle") final boolean testWhileIdle) {
123 dataSource.setTestWhileIdle(testWhileIdle);
124 }
125
126 @Inject(optional = true)
127 public void setValidationQuery(@Named("JDBC.validationQuery") final String validationQuery) {
128 dataSource.setValidationQuery(validationQuery);
129 }
130
131 @Inject(optional = true)
132 public void setValidationQueryTimeout(@Named("JDBC.validationQueryTimeout") final int validationQueryTimeout) {
133 dataSource.setValidationQueryTimeout(validationQueryTimeout);
134 }
135
136 @Inject(optional = true)
137 public void setAccessToUnderlyingConnectionAllowed(
138 @Named("JDBC.accessToUnderlyingConnectionAllowed") final boolean accessToUnderlyingConnectionAllowed) {
139 dataSource.setAccessToUnderlyingConnectionAllowed(accessToUnderlyingConnectionAllowed);
140 }
141
142 @Inject(optional = true)
143 public void setRemoveAbandoned(@Named("JDBC.removeAbandoned") final boolean removeAbandoned) {
144 dataSource.setRemoveAbandoned(removeAbandoned);
145 }
146
147 @Inject(optional = true)
148 public void setRemoveAbandonedTimeout(@Named("JDBC.removeAbandonedTimeout") final int removeAbandonedTimeout) {
149 dataSource.setRemoveAbandonedTimeout(removeAbandonedTimeout);
150 }
151
152 @Inject(optional = true)
153 public void setLogAbandoned(@Named("JDBC.logAbandoned") final boolean logAbandoned) {
154 dataSource.setLogAbandoned(logAbandoned);
155 }
156
157 @Inject(optional = true)
158 public void setPoolPreparedStatements(@Named("JDBC.poolPreparedStatements") final boolean poolPreparedStatements) {
159 dataSource.setPoolPreparedStatements(poolPreparedStatements);
160 }
161
162 @Inject(optional = true)
163 public void setMaxOpenPreparedStatements(
164 @Named("JDBC.maxOpenPreparedStatements") final int maxOpenPreparedStatements) {
165 dataSource.setMaxOpenPreparedStatements(maxOpenPreparedStatements);
166 }
167
168 @Inject(optional = true)
169 public void setConnectProperties(@Named("JDBC.connectProperties") final Properties connectionProperties) {
170 dataSource.setConnectProperties(connectionProperties);
171 }
172
173 @Inject(optional = true)
174 public void setConnectionProperties(@Named("JDBC.connectionProperties") final String connectionProperties) {
175 dataSource.setConnectionProperties(connectionProperties);
176 }
177
178 @Inject(optional = true)
179 public void setFilters(@Named("JDBC.filters") final String filters) throws SQLException {
180 dataSource.setFilters(filters);
181 }
182
183 @Inject(optional = true)
184 public void setExceptionSorter(@Named("JDBC.exceptionSorter") final String exceptionSorter) throws SQLException {
185 dataSource.setExceptionSorter(exceptionSorter);
186 }
187
188 @Inject(optional = true)
189 public void setExceptionSorterClassName(@Named("JDBC.exceptionSorterClassName") final String exceptionSorterClassName)
190 throws Exception {
191 dataSource.setExceptionSorterClassName(exceptionSorterClassName);
192 }
193
194 @Override
195 public DataSource get() {
196 return dataSource;
197 }
198
199 }