Skip to content

Commit 3692398

Browse files
committed
add customizer interface for spring boot integration
This to allow customization of the client, without having to manually create the client.
1 parent 519bf47 commit 3692398

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

analytics-spring-boot-starter/src/main/java/com/segment/analytics/autoconfigure/SegmentAnalyticsAutoConfiguration.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.segment.analytics.autoconfigure;
22

33
import com.segment.analytics.Analytics;
4+
import org.springframework.beans.factory.ObjectProvider;
45
import org.springframework.beans.factory.annotation.Autowired;
56
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
67
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -20,7 +21,9 @@ public class SegmentAnalyticsAutoConfiguration {
2021
@Autowired private SegmentProperties properties;
2122

2223
@Bean
23-
public Analytics segmentAnalytics() {
24-
return Analytics.builder(properties.getWriteKey()).build();
24+
public Analytics segmentAnalytics(ObjectProvider<SegmentAnalyticsCustomizer> customizerProvider) {
25+
Analytics.Builder builder = Analytics.builder(properties.getWriteKey());
26+
customizerProvider.orderedStream().forEach((customizer) -> customizer.customize(builder));
27+
return builder.build();
2528
}
2629
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.segment.analytics.autoconfigure;
2+
3+
import com.segment.analytics.Analytics;
4+
5+
/**
6+
* Callback interface that can be used to customize a {@link com.segment.analytics.Analytics.Builder
7+
* Analytics.Builder}.
8+
*
9+
* @author Koen Punt
10+
*/
11+
@FunctionalInterface
12+
public interface SegmentAnalyticsCustomizer {
13+
14+
/**
15+
* Callback to customize a {@link com.segment.analytics.Analytics.Builder Analytics.Builder}
16+
* instance.
17+
*
18+
* @param analyticsBuilder the analytics builder to customize
19+
*/
20+
void customize(Analytics.Builder analyticsBuilder);
21+
}

0 commit comments

Comments
 (0)