-
Notifications
You must be signed in to change notification settings - Fork 40.2k
/
R2dbcProperties.java
291 lines (229 loc) · 6.23 KB
/
R2dbcProperties.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
/*
* Copyright 2012-2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.r2dbc;
import java.time.Duration;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
import io.r2dbc.spi.ValidationDepth;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* Configuration properties for R2DBC.
*
* @author Mark Paluch
* @author Andreas Killaitis
* @author Stephane Nicoll
* @author Rodolpho S. Couto
* @since 2.3.0
*/
@ConfigurationProperties(prefix = "spring.r2dbc")
public class R2dbcProperties {
/**
* Database name. Set if no name is specified in the url. Default to "testdb" when
* using an embedded database.
*/
private String name;
/**
* Whether to generate a random database name. Ignore any configured name when
* enabled.
*/
private boolean generateUniqueName;
/**
* R2DBC URL of the database. database name, username, password and pooling options
* specified in the url take precedence over individual options.
*/
private String url;
/**
* Login username of the database. Set if no username is specified in the url.
*/
private String username;
/**
* Login password of the database. Set if no password is specified in the url.
*/
private String password;
/**
* Additional R2DBC options.
*/
private final Map<String, String> properties = new LinkedHashMap<>();
private final Pool pool = new Pool();
private String uniqueName;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public boolean isGenerateUniqueName() {
return this.generateUniqueName;
}
public void setGenerateUniqueName(boolean generateUniqueName) {
this.generateUniqueName = generateUniqueName;
}
public String getUrl() {
return this.url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
public Map<String, String> getProperties() {
return this.properties;
}
public Pool getPool() {
return this.pool;
}
/**
* Provide a unique name specific to this instance. Calling this method several times
* return the same unique name.
* @return a unique name for this instance
*/
public String determineUniqueName() {
if (this.uniqueName == null) {
this.uniqueName = UUID.randomUUID().toString();
}
return this.uniqueName;
}
public static class Pool {
/**
* Minimal number of idle connections.
*
* @since 2.7.12
*/
private int minIdle = 0;
/**
* Maximum amount of time that a connection is allowed to sit idle in the pool.
*/
private Duration maxIdleTime = Duration.ofMinutes(30);
/**
* Maximum lifetime of a connection in the pool. By default, connections have an
* infinite lifetime.
*/
private Duration maxLifeTime;
/**
* Maximum time to acquire a connection from the pool. By default, wait
* indefinitely.
*/
private Duration maxAcquireTime;
/**
* Maximum time to validate a connection from the pool. By default, wait
* indefinitely.
*
* @since 2.7.12
*/
private Duration maxValidationTime;
/**
* Maximum time to wait to create a new connection. By default, wait indefinitely.
*/
private Duration maxCreateConnectionTime;
/**
* Initial connection pool size.
*/
private int initialSize = 10;
/**
* Maximal connection pool size.
*/
private int maxSize = 10;
/**
* Validation query.
*/
private String validationQuery;
/**
* Validation depth.
*/
private ValidationDepth validationDepth = ValidationDepth.LOCAL;
/**
* Whether pooling is enabled. Requires r2dbc-pool.
*/
private boolean enabled = true;
public int getMinIdle() {
return this.minIdle;
}
public void setMinIdle(int minIdle) {
this.minIdle = minIdle;
}
public Duration getMaxIdleTime() {
return this.maxIdleTime;
}
public void setMaxIdleTime(Duration maxIdleTime) {
this.maxIdleTime = maxIdleTime;
}
public Duration getMaxLifeTime() {
return this.maxLifeTime;
}
public void setMaxLifeTime(Duration maxLifeTime) {
this.maxLifeTime = maxLifeTime;
}
public Duration getMaxValidationTime() {
return this.maxValidationTime;
}
public void setMaxValidationTime(Duration maxValidationTime) {
this.maxValidationTime = maxValidationTime;
}
public Duration getMaxAcquireTime() {
return this.maxAcquireTime;
}
public void setMaxAcquireTime(Duration maxAcquireTime) {
this.maxAcquireTime = maxAcquireTime;
}
public Duration getMaxCreateConnectionTime() {
return this.maxCreateConnectionTime;
}
public void setMaxCreateConnectionTime(Duration maxCreateConnectionTime) {
this.maxCreateConnectionTime = maxCreateConnectionTime;
}
public int getInitialSize() {
return this.initialSize;
}
public void setInitialSize(int initialSize) {
this.initialSize = initialSize;
}
public int getMaxSize() {
return this.maxSize;
}
public void setMaxSize(int maxSize) {
this.maxSize = maxSize;
}
public String getValidationQuery() {
return this.validationQuery;
}
public void setValidationQuery(String validationQuery) {
this.validationQuery = validationQuery;
}
public ValidationDepth getValidationDepth() {
return this.validationDepth;
}
public void setValidationDepth(ValidationDepth validationDepth) {
this.validationDepth = validationDepth;
}
public boolean isEnabled() {
return this.enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
}
}