日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Builder模式和Spring框架

發(fā)布時間:2023/12/3 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Builder模式和Spring框架 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

介紹

每當(dāng)對象同時具有強(qiáng)制屬性和可選屬性時,我都喜歡使用構(gòu)建器模式 。 但是構(gòu)建對象通常是Spring框架的責(zé)任,因此讓我們看看如何同時使用基于Java和XML的Spring配置來使用它。

建造者的例子

讓我們從下面的Builder類開始。

public final class Configuration<T extends DataSource> extends ConfigurationProperties<T, Metrics, PoolAdapter<T>> {public static final long DEFAULT_METRIC_LOG_REPORTER_PERIOD = 5;public static class Builder<T extends DataSource> {private final String uniqueName;private final T targetDataSource;private final PoolAdapterBuilder<T> poolAdapterBuilder;private final MetricsBuilder metricsBuilder;private boolean jmxEnabled = true;private long metricLogReporterPeriod = DEFAULT_METRIC_LOG_REPORTER_PERIOD;public Builder(String uniqueName, T targetDataSource, MetricsBuilder metricsBuilder, PoolAdapterBuilder<T> poolAdapterBuilder) {this.uniqueName = uniqueName;this.targetDataSource = targetDataSource;this.metricsBuilder = metricsBuilder;this.poolAdapterBuilder = poolAdapterBuilder;}public Builder setJmxEnabled(boolean enableJmx) {this.jmxEnabled = enableJmx;return this;}public Builder setMetricLogReporterPeriod(long metricLogReporterPeriod) {this.metricLogReporterPeriod = metricLogReporterPeriod;return this;}public Configuration<T> build() {Configuration<T> configuration = new Configuration<T>(uniqueName, targetDataSource);configuration.setJmxEnabled(jmxEnabled);configuration.setMetricLogReporterPeriod(metricLogReporterPeriod);configuration.metrics = metricsBuilder.build(configuration);configuration.poolAdapter = poolAdapterBuilder.build(configuration);return configuration;}}private final T targetDataSource;private Metrics metrics;private PoolAdapter poolAdapter;private Configuration(String uniqueName, T targetDataSource) {super(uniqueName);this.targetDataSource = targetDataSource;}public T getTargetDataSource() {return targetDataSource;}public Metrics getMetrics() {return metrics;}public PoolAdapter<T> getPoolAdapter() {return poolAdapter;} }

基于Java的配置

如果您使用的是基于 Spring Java的配置,那么您將采用以下方式:

@org.springframework.context.annotation.Configuration public class FlexyDataSourceConfiguration {@Autowiredprivate PoolingDataSource poolingDataSource;@Beanpublic Configuration configuration() {return new Configuration.Builder(UUID.randomUUID().toString(),poolingDataSource,CodahaleMetrics.BUILDER,BitronixPoolAdapter.BUILDER).build();}@Bean(initMethod = "start", destroyMethod = "stop")public FlexyPoolDataSource dataSource() {Configuration configuration = configuration();return new FlexyPoolDataSource(configuration,new IncrementPoolOnTimeoutConnectionAcquiringStrategy.Builder(5),new RetryConnectionAcquiringStrategy.Builder(2));} }

基于XML的配置

基于XML的配置比基于Java的配置更為冗長且不直觀:

<bean id="configurationBuilder" class="com.vladmihalcea.flexypool.config.Configuration$Builder"><constructor-arg value="uniqueId"/><constructor-arg ref="poolingDataSource"/><constructor-arg value="#{ T(com.vladmihalcea.flexypool.metric.codahale.CodahaleMetrics).BUILDER }"/><constructor-arg value="#{ T(com.vladmihalcea.flexypool.adaptor.BitronixPoolAdapter).BUILDER }"/> </bean><bean id="configuration" factory-bean="configurationBuilder" factory-method="build"/><bean id="dataSource" class="com.vladmihalcea.flexypool.FlexyPoolDataSource" init-method="start" destroy-method="stop"><constructor-arg ref="configuration"/><constructor-arg><array><bean class="com.vladmihalcea.flexypool.strategy.IncrementPoolOnTimeoutConnectionAcquiringStrategy$Builder"><constructor-arg value="5"/></bean><bean class="com.vladmihalcea.flexypool.strategy.RetryConnectionAcquiringStrategy$Builder"><constructor-arg value="2"/></bean></array></constructor-arg> </bean>

結(jié)論

無論您已經(jīng)選擇了Spring配置模式如何,都可以使用Builder模式。 如果您不確定它的用處,請注意以下三個令人信服的原因 。

翻譯自: https://www.javacodegeeks.com/2014/03/the-builder-pattern-and-the-spring-framework.html

總結(jié)

以上是生活随笔為你收集整理的Builder模式和Spring框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲最新网址 | 亚洲手机av| 美女搞黄视频网站 | 香蕉蜜桃视频 | 精品熟妇无码av免费久久 | 欧美裸体网站 | 视频二区在线观看 | 精品欧美一区二区久久久 | 女女同性女同一区二区三区九色 | 秘密基地免费观看完整版中文 | 久久老司机精品视频 | 中国浓毛少妇毛茸茸 | 久久欧美精品 | 69久久成人精品 | 国产美女又黄又爽又色视频免费 | 欧美大浪妇猛交饥渴大叫 | 裸体女人a级一片 | 中文字幕欲求不满 | 午夜毛片在线 | 吖v在线 | 免费一级淫片aaa片毛片a级 | 日本a天堂 | 久久黄色影视 | 国产免费啪啪 | 亚洲大片免费看 | 91岛国| 偷自拍 | 啪视频在线 | www国产在线观看 | 成人视频在线观看 | 一边吃奶一边摸做爽视频 | 国产激情无码一区二区三区 | 国产第8页 | 丁香社区五月天 | 少妇天堂网 | 黄色av网站网址 | 全国最大色 | 久久午夜鲁丝 | 国产福利一区二区三区视频 | 亚洲精品一区二区三区蜜桃 | 狠操av | 五月婷婷基地 | 日韩精品久久久久久久 | 中文字幕 日韩有码 | 人人干人人爽 | 亚洲熟女乱综合一区二区 | 露胸app | 国产无毛片 | 日韩不卡免费视频 | 亚洲一区二区乱码 | 免费91视频 | 日日网| 337p亚洲精品色噜噜狠狠 | 日韩美女黄色片 | 男人和女人日批 | 神马午夜在线 | 亚洲一区二区色图 | 欧美成人精品网站 | 中日韩精品在线 | 自拍偷拍亚洲天堂 | 一区二区三区天堂 | 黄色片网站视频 | 秋霞av鲁丝片一区二区 | 国产男男gay网站 | 91精品国产综合久久久蜜臀九色 | 青青青青青操 | 亚洲资源站 | 久久公开视频 | 香蕉久久a毛片 | 四虎影院在线 | 丁香六月色婷婷 | 欧美成人h | 免费av在线网站 | 久久午夜视频 | 不卡影院 | 中文字幕日韩专区 | 亚洲日本精品一区 | 日韩毛片大全 | 91天堂在线| 久久亚洲天堂 | 日韩免费三级 | 黄页网站视频在线观看 | 超碰caoporen| 欧日韩在线视频 | 欧美色涩 | 天天摸天天干天天操 | 女人扒开双腿让男人捅 | 亚洲视频一二 | 日韩欧美国产一区二区三区 | 国产又粗又猛又色 | 91视频在线视频 | 久久中文字幕高清 | 播五月婷婷 | 五月开心播播网 | h色视频在线观看 | 免费极品av一视觉盛宴 | 亚洲视频第一页 | 日韩精品视频在线观看免费 | 永久免费看黄 |