做网站后面加什么,3m网站源码,松江品划做企业网站,wordpress猫咪主题builder 模式介绍 每当对象同时具有强制属性和可选属性时#xff0c;我都喜欢使用构建器模式 。 但是构建对象通常是Spring框架的责任#xff0c;因此让我们看看如何同时使用基于Java和XML的Spring配置来使用它。 建造者的例子 让我们从下面的Builder类开始。 public final… builder 模式 介绍 每当对象同时具有强制属性和可选属性时我都喜欢使用构建器模式 。 但是构建对象通常是Spring框架的责任因此让我们看看如何同时使用基于Java和XML的Spring配置来使用它。 建造者的例子 让我们从下面的Builder类开始。 public final class ConfigurationT extends DataSource extends ConfigurationPropertiesT, Metrics, PoolAdapterT {public static final long DEFAULT_METRIC_LOG_REPORTER_PERIOD 5;public static class BuilderT extends DataSource {private final String uniqueName;private final T targetDataSource;private final PoolAdapterBuilderT 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, PoolAdapterBuilderT 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 ConfigurationT build() {ConfigurationT configuration new ConfigurationT(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 PoolAdapterT 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 idconfigurationBuilder classcom.vladmihalcea.flexypool.config.Configuration$Builderconstructor-arg valueuniqueId/constructor-arg refpoolingDataSource/constructor-arg value#{ T(com.vladmihalcea.flexypool.metric.codahale.CodahaleMetrics).BUILDER }/constructor-arg value#{ T(com.vladmihalcea.flexypool.adaptor.BitronixPoolAdapter).BUILDER }/
/beanbean idconfiguration factory-beanconfigurationBuilder factory-methodbuild/bean iddataSource classcom.vladmihalcea.flexypool.FlexyPoolDataSource init-methodstart destroy-methodstopconstructor-arg refconfiguration/constructor-argarraybean classcom.vladmihalcea.flexypool.strategy.IncrementPoolOnTimeoutConnectionAcquiringStrategy$Builderconstructor-arg value5//beanbean classcom.vladmihalcea.flexypool.strategy.RetryConnectionAcquiringStrategy$Builderconstructor-arg value2//bean/array/constructor-arg
/bean结论 无论您已经选择了Spring配置模式如何都可以使用Builder模式。 如果您不确定它的用处请注意以下三个令人信服的原因 。 翻译自: https://www.javacodegeeks.com/2014/03/the-builder-pattern-and-the-spring-framework.htmlbuilder 模式