Skip to content

Commit

Permalink
[#305] Adjust the AxonAutoConfiguration even more
Browse files Browse the repository at this point in the history
-Replace @ConditionalOnExpression for @ConditionalOnBean on distributedCommandBus()
-Move @ConditionalOnExpression annotation from distributedCommandBus() to JGroupsAutoConfiguration
-Move @ConditionalOnProperty comment from distributedCommandBus() to JGroupsAutoConfiguration
-Add @AutoConfigureBefore(JGroupsAutoConfiguration.class) to SpringCloudAutoConfiguration
-Add @ConditionalOnClass to SpringCloudAutoConfiguration.java
  • Loading branch information
smcvb committed Apr 6, 2017
1 parent 3029a17 commit 0b8744a
Showing 1 changed file with 37 additions and 29 deletions.
Expand Up @@ -52,6 +52,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
Expand Down Expand Up @@ -153,8 +154,7 @@ public CommandBus commandBus(TransactionManager txManager, AxonConfiguration axo
@Bean
@Primary
@ConditionalOnMissingBean
@ConditionalOnExpression("${axon.distributed.enabled:false} || ${axon.distributed.jgroups.enabled:false}")
//@ConditionalOnExpression can be replaced for @ConditionalOnProperty once the deprecated jgroups.enabled is removed
@ConditionalOnBean({CommandRouter.class, CommandBusConnector.class})
public DistributedCommandBus distributedCommandBus(CommandRouter router,
CommandBusConnector connector,
DistributedCommandBusProperties distributedCommandBusProperties) {
Expand Down Expand Up @@ -291,34 +291,13 @@ public SpringAMQPPublisher amqpBridge(EventBus eventBus, ConnectionFactory conne
}

@Configuration
@AutoConfigureAfter(JpaConfiguration.class)
@ConditionalOnProperty("axon.distributed.enabled")
@ConditionalOnBean(value = { DiscoveryClient.class, RestTemplate.class })
public static class SpringCloudConfiguration {

@Bean
@ConditionalOnMissingBean
public CommandRouter springCloudCommandRouter(DiscoveryClient discoveryClient) {
return new SpringCloudCommandRouter(discoveryClient, new AnnotationRoutingStrategy());
}

@Bean
@ConditionalOnMissingBean
public CommandBusConnector springHttpCommandBusConnector(@Qualifier("localSegment") CommandBus localSegment,
RestTemplate restTemplate,
Serializer serializer) {
return new SpringHttpCommandBusConnector(localSegment, restTemplate, serializer);
}

}

@AutoConfigureAfter(SpringCloudAutoConfiguration.class)
@ConditionalOnExpression("${axon.distributed.enabled:false} || ${axon.distributed.jgroups.enabled:false}")
//@ConditionalOnExpression can be replaced for @ConditionalOnProperty once the deprecated jgroups.enabled is removed
@ConditionalOnClass(name = { "org.axonframework.jgroups.commandhandling.JGroupsConnector", "org.jgroups.JChannel" })
@ConditionalOnProperty("axon.distributed.jgroups.enabled")
@AutoConfigureAfter(SpringCloudConfiguration.class)
@Configuration
public static class JGroupsConfiguration {
public static class JGroupsAutoConfiguration {

private static final Logger logger = LoggerFactory.getLogger(JGroupsConfiguration.class);
private static final Logger logger = LoggerFactory.getLogger(JGroupsAutoConfiguration.class);

@Autowired
private DistributedCommandBusProperties properties;
Expand All @@ -344,7 +323,6 @@ public GossipRouter gossipRouter() {
return null;
}


@ConditionalOnMissingBean({CommandRouter.class, CommandBusConnector.class})
@Bean
public JGroupsConnectorFactoryBean jgroupsConnectorFactoryBean(Serializer serializer,
Expand All @@ -364,4 +342,34 @@ public JGroupsConnectorFactoryBean jgroupsConnectorFactoryBean(Serializer serial

}

@Configuration
@AutoConfigureAfter(JpaConfiguration.class)
@AutoConfigureBefore(JGroupsAutoConfiguration.class)
@ConditionalOnProperty("axon.distributed.enabled")
@ConditionalOnClass(name = {
"org.axonframework.springcloud.commandhandling.SpringCloudCommandRouter",
"org.axonframework.springcloud.commandhandling.SpringHttpCommandBusConnector",
"org.springframework.cloud.client.discovery.DiscoveryClient",
"org.springframework.web.client.RestTemplate"
})
public static class SpringCloudAutoConfiguration {

@Bean
@ConditionalOnMissingBean
@ConditionalOnBean(DiscoveryClient.class)
public CommandRouter springCloudCommandRouter(DiscoveryClient discoveryClient) {
return new SpringCloudCommandRouter(discoveryClient, new AnnotationRoutingStrategy());
}

@Bean
@ConditionalOnMissingBean
@ConditionalOnBean(RestTemplate.class)
public CommandBusConnector springHttpCommandBusConnector(@Qualifier("localSegment") CommandBus localSegment,
RestTemplate restTemplate,
Serializer serializer) {
return new SpringHttpCommandBusConnector(localSegment, restTemplate, serializer);
}

}

}

0 comments on commit 0b8744a

Please sign in to comment.