Skip to content

Commit 5761ddc

Browse files
committed
🎨 新增消息管道ServerConfiguration的自定义配置类
1 parent 093d94f commit 5761ddc

File tree

3 files changed

+56
-2
lines changed

3 files changed

+56
-2
lines changed

api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeServerAutoConfiguration.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,33 @@ public MessagePipeServerAutoConfiguration(MessagePipeServerProperties messagePip
2727
this.messagePipeServerProperties = messagePipeServerProperties;
2828
}
2929

30+
/**
31+
* Instantiate the wrapper class of {@link ServerConfigurationCustomizer}
32+
*
33+
* @param customizers The {@link ServerConfigurationCustomizer} object provider
34+
* @return The {@link ServerConfigurationCustomizers} instance
35+
*/
36+
@Bean
37+
@ConditionalOnMissingBean
38+
public ServerConfigurationCustomizers serverConfigurationCustomizers(
39+
ObjectProvider<ServerConfigurationCustomizer> customizers) {
40+
List<ServerConfigurationCustomizer> sortedCustomizers =
41+
customizers.orderedStream().collect(Collectors.toList());
42+
return new ServerConfigurationCustomizers(sortedCustomizers);
43+
}
44+
3045
/**
3146
* Create {@link ServerConfiguration} instance
3247
*
3348
* @return The {@link ServerConfiguration} instance
3449
* @see MessagePipeServerProperties
50+
* @see ServerConfigurationCustomizer
51+
* @see ServerConfigurationCustomizers
3552
*/
3653
@Bean
37-
public ServerConfiguration serverConfiguration() {
38-
return messagePipeServerProperties.getConfiguration();
54+
public ServerConfiguration serverConfiguration(ServerConfigurationCustomizers customizers) {
55+
ServerConfiguration configuration = messagePipeServerProperties.getConfiguration();
56+
return customizers.customizer(configuration);
3957
}
4058

4159
/**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.minbox.framework.api.boot.autoconfigure.message.pipe.server;
2+
3+
import org.minbox.framework.message.pipe.server.config.ServerConfiguration;
4+
5+
/**
6+
* @author 恒宇少年
7+
*/
8+
@FunctionalInterface
9+
public interface ServerConfigurationCustomizer {
10+
void customize(ServerConfiguration serverConfiguration);
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package org.minbox.framework.api.boot.autoconfigure.message.pipe.server;
2+
3+
import org.minbox.framework.message.pipe.server.config.ServerConfiguration;
4+
import org.springframework.boot.util.LambdaSafe;
5+
6+
import java.util.ArrayList;
7+
import java.util.Collections;
8+
import java.util.List;
9+
10+
/**
11+
* @author 恒宇少年
12+
*/
13+
public class ServerConfigurationCustomizers {
14+
private List<ServerConfigurationCustomizer> customizers;
15+
16+
public ServerConfigurationCustomizers(List<ServerConfigurationCustomizer> customizers) {
17+
this.customizers = (customizers != null) ? new ArrayList<>(customizers) : Collections.emptyList();
18+
}
19+
20+
public ServerConfiguration customizer(ServerConfiguration configuration) {
21+
LambdaSafe.callbacks(ServerConfigurationCustomizer.class, this.customizers, configuration)
22+
.withLogger(ServerConfigurationCustomizer.class).invoke((customizer) -> customizer.customize(configuration));
23+
return configuration;
24+
}
25+
}

0 commit comments

Comments
 (0)