From c5d8b00e2266b1a7112970db05773da634373dfc Mon Sep 17 00:00:00 2001 From: dingzhaojun Date: Fri, 2 Feb 2024 10:05:46 +0800 Subject: [PATCH] Y9ConsulAutoServiceRegistrationListener --- .../net/risesoft/demo/OnApplicationReady.java | 27 +++++++------------ .../net/risesoft/demo/config/Y9Config.java | 9 +++++++ ...ConsulAutoServiceRegistrationListener.java | 27 +++++++++++++++++++ src/main/resources/application.yml | 4 ++- 4 files changed, 49 insertions(+), 18 deletions(-) create mode 100644 src/main/java/org/springframework/cloud/client/serviceregistry/Y9ConsulAutoServiceRegistrationListener.java diff --git a/src/main/java/net/risesoft/demo/OnApplicationReady.java b/src/main/java/net/risesoft/demo/OnApplicationReady.java index c9ebd9f..02e30c1 100644 --- a/src/main/java/net/risesoft/demo/OnApplicationReady.java +++ b/src/main/java/net/risesoft/demo/OnApplicationReady.java @@ -1,30 +1,23 @@ package net.risesoft.demo; -import org.springframework.boot.autoconfigure.service.connection.ConnectionDetails; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; -import net.risesoft.demo.entity.User; -import net.risesoft.demo.repository.UserRepository; - @Component public class OnApplicationReady implements ApplicationListener { @Override public void onApplicationEvent(ApplicationReadyEvent event) { - //System.out.println(event.getApplicationContext().getEnvironment().getProperty("path")); - - String[] ss = event.getApplicationContext().getBeanNamesForType(ConnectionDetails.class); - for (String s : ss) { - System.out.println(s); - } - - UserRepository userRepository = event.getApplicationContext().getBean(UserRepository.class); - User user = new User(); - user.setName("张三"); - user.setAge(20); - userRepository.save(user); - + /* + * String[] ss = + * event.getApplicationContext().getBeanNamesForType(ConnectionDetails.class); + * for (String s : ss) { System.out.println(s); } + * + * UserRepository userRepository = + * event.getApplicationContext().getBean(UserRepository.class); User user = new + * User(); user.setName("张三"); user.setAge(20); userRepository.save(user); + */ + } } diff --git a/src/main/java/net/risesoft/demo/config/Y9Config.java b/src/main/java/net/risesoft/demo/config/Y9Config.java index 9f7db95..6a655b4 100644 --- a/src/main/java/net/risesoft/demo/config/Y9Config.java +++ b/src/main/java/net/risesoft/demo/config/Y9Config.java @@ -1,5 +1,8 @@ package net.risesoft.demo.config; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.cloud.client.serviceregistry.Y9ConsulAutoServiceRegistrationListener; +import org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistrationListener; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -10,5 +13,11 @@ public class Y9Config { public Y9Context y9Context() { return new Y9Context(); } + + @Bean + @ConditionalOnMissingBean(ConsulAutoServiceRegistrationListener.class) + public Y9ConsulAutoServiceRegistrationListener y9ConsulAutoServiceRegistrationListener() { + return new Y9ConsulAutoServiceRegistrationListener(); + } } diff --git a/src/main/java/org/springframework/cloud/client/serviceregistry/Y9ConsulAutoServiceRegistrationListener.java b/src/main/java/org/springframework/cloud/client/serviceregistry/Y9ConsulAutoServiceRegistrationListener.java new file mode 100644 index 0000000..edbe9d9 --- /dev/null +++ b/src/main/java/org/springframework/cloud/client/serviceregistry/Y9ConsulAutoServiceRegistrationListener.java @@ -0,0 +1,27 @@ +package org.springframework.cloud.client.serviceregistry; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.web.ServerProperties; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistration; +import org.springframework.context.ApplicationListener; + +public class Y9ConsulAutoServiceRegistrationListener implements ApplicationListener { + @Autowired + private ConsulAutoServiceRegistration consulAutoServiceRegistration; + + @Autowired + private ConsulDiscoveryProperties consulProperties; + + @Autowired + private ServerProperties serverProperties; + + @Override + public void onApplicationEvent(ApplicationReadyEvent event) { + // 参考 ConsulAutoServiceRegistrationListener + consulAutoServiceRegistration.getPort().compareAndSet(0, serverProperties.getPort()); + consulAutoServiceRegistration.start(); + } + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index d71f081..6b15745 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -7,7 +7,7 @@ management: exposure: include: '*' server: - port: 8081 + port: 9000 servlet: context-path: /demo01 encoding: @@ -35,6 +35,8 @@ spring: consul: host: ${CONSUL_HOST:localhost} port: ${CONSUL_PORT:8500} + config: + enabled: false discovery: register-health-check: true healthCheckPath: ${server.servlet.context-path}/actuator/health