Tabla de contenido
2. Modificar la configuración e iniciar nacos
3. Configurar nacos en springcloud
Estructura del directorio de código
1. archivo de configuración de springcloud pom
2. Configuración del módulo de pedidos order-nacos
3. Configuración del módulo de inventario de stock-servicio
4. Inicio y operación del proyecto
1. Descarga nacos
Seleccione la descarga de nacos que coincida con la versión de springcloud
Notas de la versión · alibaba/spring-cloud-alibaba Wiki · GitHub
Seleccione el paquete zip en el entorno de Windows. Descomprímalo después de descargarlo.
2. Modificar la configuración e iniciar nacos
1. Arranque directo
Ingrese al directorio bin descomprimido, edite startup.cmd, modifique la línea set MODE para establecer MODE="standalone" y guarde.
Haga doble clic en startup.cmd o ejecútelo como administrador.
Puede verificar el registro en bin/logs para ver si el inicio es exitoso.
2. Inicio de fondo
Utilice la herramienta nssm para instalar nacos como servicio en segundo plano. El uso de nssm se refiere al siguiente enlace.
Después de comenzar, ingrese la dirección para acceder. Tanto el usuario como la contraseña son nacos.
http://192.168.1.15:8848/nacos/index.html
3. Configurar nacos en springcloud
Estructura del directorio de código
1. archivo de configuración de springcloud pom
La configuración general del proyecto determina la versión de springcloud y la versión de cada componente.
Simplemente concéntrese en <dependencyManagement>, que reemplaza a <parent>.
Los módulos debajo de <módulos> se agregan automáticamente cuando el proyecto agrega módulos.
<?versión xml="1.0" codificación="UTF-8"?> <proyecto xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <modules> <module>stock</module> <module>order</module> <module>stock-nacos</module> <module>order-nacos</module> < /modules> <groupId>com.wind.springcloud</groupId> <artifactId>alibaba</artifactId> <version>0.0.1-INSTANTÁNEA</versión> <nombre>alibaba</nombre> <descripción>springcloudalibaba</descripción> <embalaje>pom</embalaje> <propiedades> <java.version>1.8</java.version> <spring.cloud.alibaba.version>2.2.5.RELEASE</spring.cloud.alibaba.version> <spring.boot.version>2.3.11.RELEASE</ spring.boot.version> <spring.cloud.version> Hoxton.SR8</spring.cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring -boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <!-- alibaba版本管理--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${ spring.cloud.alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- springboot版本管理--> <dependency> <groupId>org. springframework.boot</groupId>versión}</versión> <tipo>pom</tipo>boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>${spring.boot.version}</version> <scope>import</scope> </dependency> <!-- springcloud版本管理--> <dependency> <groupId>org.springframework.cloud</ groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring.cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework. arranque</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </construir> </proyecto>
2. Configuración del módulo de pedidos order-nacos
pom.xml
<?versión xml="1.0" codificación="UTF-8"?> <proyecto xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>alibaba</artifactId> <groupId>com.wind.springcloud</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>order-nacos</artifactId> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <!-- nacos服务注册发现 --> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies> </project>
aplicación.yml
El registro del servicio a nacos usa el valor del nombre de la aplicación por defecto
servidor: puerto: 8020 primavera: aplicación: nombre: orden-servicio nube: nacos: dirección-servidor: 127.0.0.1:8848 descubrimiento: nombre de usuario: nacos contraseña: nacos # espacio de nombres: público #Gestión de clasificación de servicios predeterminado público # efímero: falso # El valor predeterminado de la instancia permanente es verdadero Servicio # de instancia temporal: predeterminado ${spring.application.name} # grupo: gestión de clasificación más fina # peso: #peso del equilibrio de carga # metadatos: los metadatos se pueden ampliar de acuerdo con el código fuente
3. Configuración del módulo de inventario de stock-servicio
El pom.xml es consistente con el módulo de pedido, y application.yml solo necesita cambiar el puerto a 8021.
4. Código
AplicaciónPedido.java
Donde @LoadBalanced es la llamada de equilibrio de carga predeterminada de nacos. Analizar el nombre del servicio para obtener ip, puerto
package com.wind.order;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
/**
* @author dongguanghui
* @date 2023/5/15 17:51
*/
@SpringBootApplication
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class,args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(RestTemplateBuilder builder){
RestTemplate restTemplate = builder.build();
return restTemplate;
}
}
OrderController.java
package com.wind.order.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/**
* @author dongguanghui
* @date 2023/5/15 17:47
*/
@RestController
@RequestMapping("/order")
public class OrderController {
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/add")
public String add(){
System.out.println("下单成功");
String msg = restTemplate.getForObject("http://stock-service/stock/reduct", String.class);
return "order success!" + msg;
}
}
StockApplication.java
package com.wind.stock;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
/**
* @author dongguanghui
* @date 2023/5/15 17:51
*/
@SpringBootApplication
public class StockApplication {
public static void main(String[] args) {
SpringApplication.run(StockApplication.class,args);
}
}
StockController.java
package com.wind.stock.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/**
* @author dongguanghui
* @date 2023/5/15 17:47
*/
@RestController
@RequestMapping("/stock")
public class StockController {
@Value("${server.port}")
private String port;
@RequestMapping("/reduct")
public String reduct(){
System.out.println("下单成功");
return "reduct success!:"+port;
}
}
4. Inicio y operación del proyecto
Una vez que se inicia el proyecto, el servicio se registra en nacos.
El navegador llama directamente a la interfaz. Puede ver que el fondo llama a otro servicio con éxito a través del nombre del servicio