|
17 | 17 |
|
18 | 18 | import java.sql.PreparedStatement; |
19 | 19 | import java.sql.Statement; |
| 20 | +import java.util.function.Supplier; |
20 | 21 |
|
21 | 22 | import javax.sql.DataSource; |
22 | 23 |
|
23 | 24 | import org.seasar.doma.DomaIllegalArgumentException; |
24 | 25 | import org.seasar.doma.jdbc.command.Command; |
25 | 26 | import org.seasar.doma.jdbc.dialect.Dialect; |
| 27 | +import org.seasar.doma.jdbc.entity.EntityListener; |
26 | 28 | import org.seasar.doma.jdbc.query.Query; |
27 | 29 | import org.seasar.doma.jdbc.tx.TransactionManager; |
28 | 30 | import org.seasar.doma.message.Message; |
@@ -228,6 +230,29 @@ default int getBatchSize() { |
228 | 230 | return 0; |
229 | 231 | } |
230 | 232 |
|
| 233 | + /** |
| 234 | + * {@link EntityListener} のインスタンスを取得します。 |
| 235 | + * <p> |
| 236 | + * デフォルトの実装では単純に {@link Supplier#get()} を実行して取得したインスタンスを返します。 |
| 237 | + * |
| 238 | + * {@link EntityListener} をDIコンテナで管理したい場合などはこのメソッドをオーバーライドし、 |
| 239 | + * DIコンテナから取得したインスタンスを返すようにしてください。 |
| 240 | + * |
| 241 | + * @param listenerClass |
| 242 | + * {@link EntityListener} の実装クラス |
| 243 | + * @param listenerSupplier |
| 244 | + * {@link EntityListener} のインスタンスを返す {@link Supplier} |
| 245 | + * @param <ENTITY> |
| 246 | + * エンティティの型 |
| 247 | + * @param <LISTENER> |
| 248 | + * リスナーの型 |
| 249 | + * @return {@link EntityListener} のインスタンス |
| 250 | + */ |
| 251 | + default <ENTITY, LISTENER extends EntityListener<ENTITY>> LISTENER getEntityListener( |
| 252 | + Class<LISTENER> listenerClass, Supplier<LISTENER> listenerSupplier) { |
| 253 | + return listenerSupplier.get(); |
| 254 | + } |
| 255 | + |
231 | 256 | /** |
232 | 257 | * {@link ConfigProvider} から {@link Config} を取得します。 |
233 | 258 | * |
|
0 commit comments