Artigo Diretório
Introdução
Nacos tem as funções de centro de registro e centro de configuração. Primeiro, vamos apresentar o centro de configuração separadamente
Nacos providenciou o armazenamento de configuração e seus metadados de chave / valor armazenados , o servidor e o cliente fornecem suporte para a configuração externa do sistema distribuído. Usando Spring Cloud Alibaba Nacos Config, você pode gerenciar centralmente a configuração de propriedade externa de seu aplicativo Spring Cloud no Nacos Server .
Spring Cloud Alibaba Nacos Config é uma alternativa ao Spring Cloud Config Server e Client . Os conceitos no cliente e no servidor têm a mesma abstração do Spring Environment e PropertySource. No estágio de bootstrap especial, a configuração é carregada no ambiente Spring. Conforme o aplicativo vai do desenvolvimento ao teste e à produção por meio do pipeline de implantação, você pode gerenciar a configuração entre esses ambientes e garantir que o aplicativo tenha tudo o que precisa para ser executado durante a migração. Consulte o site oficial do Nacos para saber como obter e iniciar o Nacos .
Questão :
Integração do projeto
Também há duas maneiras de introduzir o Nacos Config, a saber, introdução do Aliyun Java Initializr e dependência do Maven pom.xml. É oficialmente recomendado usar Aliyun Java Initializr para apresentar o Nacos Config para simplificar as dependências entre componentes.
Exemplo Pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project 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>
<groupId>com.laker</groupId>
<artifactId>config</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>config</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
<spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.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-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<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>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<mainClass>com.laker.config.ConfigApplication</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Inicie o servidor Nacos
Consulte Resolver o problema de baixa velocidade de download doméstico do Nacos Server Download start
O nome de usuário e a senha padrão são: nacos
Nacos Server adicionar configuração
- Configuração do servidor Nacos
- bootstrap.yml 配置
- Configuração de código
O quadro geral é o seguinte:
Introdução de funções comuns
Ele apenas descreve como usá-lo e o princípio se refere ao artigo a seguir.
Use o Nacos Config como configuração distribuída do Spring Cloud
Começar a aula
@SpringBootApplication
public class NacosConfigSampleApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigSampleApplication.class, args
);
}
}
Classe de configuração
@RestController
@RequestMapping("/config")
public class ConfigController {
@Value("${laker.name}")
private String lakerName;
@RequestMapping("/get")
public String get() {
return lakerName;
}
}
verificação
Acesso navegador: http://ip:port/config/get
.
Use o Nacos Config para obter a atualização dinâmica do Bean
O Nacos Confg suporta o RefreshScope
recurso Spring Cloud @ padrão , ou seja, depois que o aplicativo se inscreve em uma configuração do Nacos, quando o conteúdo da configuração muda, as propriedades da configuração de ligação nos Beans de atualização de escopo serão atualizadas condicionalmente. A chamada condição significa que o Bean deve:
- Condição necessária : a classe declarada de Bean deve ser marcada com @
RefreshScope
- Escolha uma condição :
- Propriedades (campos não estáticos) são marcados com @
Value
- @
ConfigurationProperties
Bean
- Propriedades (campos não estáticos) são marcados com @
Além disso, o Nacos Confg também introduziu a interface de monitoramento de alteração de dados subjacente do Nacos Client, a
saber , com.alibaba.nacos.api.config.listener.Listener. O conteúdo a seguir discutirá esses três
cenários de uso diferentes .
Cliente Nacos: API do cliente Nacos, que também é a dependência subjacente do Nacos Config
Atualização dinâmica da propriedade Bean @Value
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${laker.name}")
private String lakerName;
@RequestMapping("/get")
public String get() {
return lakerName;
}
@PostConstruct
public void init() {
System.out.printf("---[init]--- laker name : %s ", lakerName);
}
}
@ConfigurationProperties Atualização dinâmica da propriedade Bean
- 激活 @ConfigurationProperties Bean @EnableConfigurationProperties (
User.class)。 - Injeção de dependência de User Bean por meio de @Autowired.
@RefreshScope
@ConfigurationProperties(prefix = "laker")
public class User {
private String name;
private int age;
}
Começar a aula
@EnableConfigurationProperties(User.class)
@SpringBootApplication
public class NacosConfigSampleApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigSampleApplication.class, args
);
}
}
Use o Nacos g Config para monitorar a atualização dinâmica das propriedades do Bean
Conforme mencionado anteriormente, com.alibaba.nacos.api.config.listener.Listener é a interface do ouvinte de configuração padrão do Nacos ClientAPI. Como ele apenas escuta o conteúdo da configuração e não pode se comunicar diretamente com o sistema Spring, ele precisa da ajuda do Spring Cloud Alibaba API Nacos Config NacosConfigManager
@SpringBootApplication
public class NacosConfigSampleApplication {
@Autowired
private NacosConfigManager nacosConfigManager;
public static void main(String[] args) {
SpringApplication.run(NacosConfigSampleApplication.class, args
);
}
@Bean
public ApplicationRunner runner() {
return args -> {
String dataId = "laker-dev.yaml";
String group = "DEFAULT_GROUP";
nacosConfigManager.getConfigService().addListener(dataId, group, new
AbstractListener() {
@Override
public void receiveConfigInfo(String configInfo) {
System.out.println("[Listener] " + configInfo);
}
});
};
}
}
[Listener] laker:
name: laker1222222
referência:
- Spring Cloud Alibaba da entrada ao combate real.pdf
Preste atenção à minha conta pública [ Entrevistador Java ], responda: 100 podem ser baixados
Catálogo desta série