Config Server için @EnableConfigServer yazısına bakınız.
Konfigürasyon değiştirilince tekrar okumak için @RefreshScope yazısına bakınız.
Microservice yazılımı konfigürasyon ayalarını artık Config Server'dan çekecektir
Maven
Şu satırı dahil ederiz
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency>
bootstrap.yml or bootstrap.properties Nedir
Açıklaması şöyle. İstemci tarafında kullanılır. Artık bu dosyaya gerek yok
bootstrap.yml is loaded before application.yml.It is typically used for the following:- when using Spring Cloud Config Server, you should specify spring.application.name and spring.cloud.config.server.git.uri inside bootstrap.yml- some encryption/decryption information
Örnek - Eski Kullanım
Açıklaması şöyle
If you are using the latest version of spring boot use spring.config.import=... instead of spring.cloud.config.uri=...
Şöyle yaparız. Burada github'daki latest branch'ine atıfta bulunuluyor
spring.cloud.config.uri=http://localhost:8888 spring.application.name=spring-cloud-config-client spring.cloud.config.label=latest spring.profiles.active=dev
Örnek
Şöyle yaparız. Burada github'daki main branch'ine atıfta bulunuluyor
spring.application.name=config-client spring.profiles.active=development spring.cloud.config.uri=http://localhost:8888 spring.cloud.config.label=main
Örnek - Yeni Kullanım
Şöyle yaparız.
spring.config.import=optional:configserver:http://localhost:8888 # Config sunucu adresi spring.application.name=batch-jobs # Dosya ismi spring.profiles.active=dev # Profile ismi
Örnek - Yeni Kullanım
Şöyle yaparız
server.port=8083 spring.application.name=neo4j-client # Dosya ismi spring.config.import=configserver:http://localhost:8888/ # Config sunucu adresi
Örnek - Yeni Kullanım Yaml Olarak
Şöyle yaparız
spring: application: name: spring-boot-starter profiles: active: dev config: import: optional:configserver:http://localhost:8888 management: endpoints: web: exposure: include: "*"
Örnek - Retry Ayarları
Şöyle yaparız. spring.cloud.config.uri ile Config Server'ın adresi belirtilir.
spring.application.name=hello-serviceserver.port=8080spring.profiles.active=developmentspring.cloud.config.uri=http://localhost:8888
Eğer Config Server ulaşılamıyorsa, şu ayarlar kullanılabilir
spring.cloud.config.fail-fast spring.cloud.config.retry.initial-interval spring.cloud.config.retry.multiplier spring.cloud.config.retry.max-interval spring.cloud.config.retry.max-attempts
spring.application.name Alanı
Okunacak property dosyasını ismini belirtir. Dosya ismine aktif profile da eklenir. Açıklaması şöyle
This is the identifier for the microservice application and there will be a property file with the same name in the repository. This will identify which property file to fetch from the repository for a particular microservice. For example, for hello-service.properties, we would use hello-service-development.properties (the -development suffix tells the system to fetch code for development profile).
Örnek - Çift Spring Security Ayarı
Eğer zaten Spring Security varsa, /actuator/refresh adresini farklı bir şifre ile korumak isteyebiliriz. Şöyle yaparız. Burada @Order(1) ile actuator/refresh adresine öncelik veriliyor.
@Order(1)@Configurationpublic static class ActuatorSecurityConfig extends WebSecurityConfigurerAdapter {@Overridepublic void configure(HttpSecurity http) throws Exception {http.csrf().disable().antMatcher("/actuator/*").authorizeRequests().antMatchers("/actuator/*").authenticated().and().httpBasic();}@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication().withUser("serviceOneUser").password("{noop}serviceOnePassword").roles("USER");}}@Order(2)@Configurationpublic static class ApplicationSecurityConfig extends WebSecurityConfigurerAdapter {@Overridepublic void configure(HttpSecurity http) throws Exception {http.authorizeRequests().anyRequest().authenticated().and().oauth2Login();}}
Bu adresi şifreyle tetiklemek için şöyle yaparız
curl -u serviceOneUser:serviceOnePassword -X POST http://localhost:8001/actuator/refresh
Örnek
Şöyle yaparız. Burada Config Server'dan okunacak değer @Vaue ile çekiliyor.
import org.springframework.cloud.context.config.annotation.RefreshScope;...@RefreshScope@RestController@RequestMapping("/secure")public static class SecureController {@Value("${hello.message}")private String helloMessage;@GetMappingpublic String secure(Principal principal) {return helloMessage;}}
Hiç yorum yok:
Yorum Gönder