日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。