First, you have to start a Nacos Server in backend , If you don't know steps, you can learn about quick start.
Suppose your Nacos Server is startup, you would add nacos-discovery-spring-boot-starter
in your Spring application's dependencies :
<dependencies>
...
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>${latest.version}</version>
</dependency>
...
</dependencies>
Note: Version 0.2.x.RELEASE is compatible with the Spring Boot 2.x and the Spring Boot 3.x. Version 0.1.x.RELEASE is compatible with the Spring Boot 1.x.
After that, you could define some configurations in application.properties
:
nacos.discovery.server-addr=localhost:8848
nacos.discovery.server-addr
attribute configures "${host}:${port}" of your Nacos Server
Then you could using @SpringBootApplication
to annotate main class like normal SpringBoot Application and startup:
@SpringBootApplication
public class DiscoveryApplication {
public static void main(String[] args) {
SpringApplication.run(DiscoveryApplication.class, args);
}
}
If you'd like to use "Service Registry" features, NamingService
is a core service interface to get or publish config, you could use "Dependency Injection" to inject NamingService
instance in your Spring Beans.
@Service
public class NamingServiceDemo {
@NacosInjected
private NamingService namingService;
public void demoRegisterService() {
try {
namingService.registerInstance("test-service", "1.1.1.1", 8080);
} catch (NacosException e) {
e.printStackTrace();
}
}
...
}
above code equals below one:
try {
// Initialize the naming service, and the console automatically obtains the following parameters through the sample code.
String serverAddr = "{serverAddr}";
Properties properties = new Properties();
properties.put("serverAddr", serverAddr);
NamingService naming = NamingFactory.createNamingService(properties);
namingService.registerInstance("test-service", "1.1.1.1", 8080);
} catch (NacosException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
For more information about Nacos Spring, see Nacos Spring Project.
Nacos discovery starter also support the implementation of Spring Boot actuator endpoints.
Prerequisite:
Adding nacos-discovery-spring-boot-actuator
to your pom.xml in Nacos Discovery Project.
Then Configure your endpoint security strategy.
- Spring Boot1.x
management.security.enabled=false
- Spring Boot2.x or Spring Boot3.x
management.endpoints.web.exposure.include=*
To view the endpoint information, visit the following URLS:
- Spring Boot1.x: URL is http://127.0.0.1:10012/nacos-discovery.
- Spring Boot2.x or Spring Boot3.x: URL is http://127.0.0.1:10012/actuator/nacos-discovery.
nacos-discovery-spring-boot-actuator
support the standard Spring Boot HealthIndicator
as a production-ready feature , which will be aggregated into Spring Boot's Health
and exported on HealthEndpoint
that works MVC (Spring Web MVC) if it is available.
Suppose a Spring Boot Web application did not specify management.server.port
(SpringBoot1.x using management.port
), you can access http://localhost:{port}/actuator/health (SpringBoot1.x visit http://localhost:{port}/health) via Web Client and will get a response with JSON format is like below :
{
"status": "UP",
"details": {
"nacosDiscovery": {
"status": "UP"
},
"diskSpace": {
"status": "UP",
"details": {
"total": 250140434432,
"free": 52323680256,
"threshold": 10485760
}
}
}
}