Skip to content

Commit 54cad9e

Browse files
authored
App Config Sample updates (#812)
* Updating to latest version * More updates
1 parent 8bf9af7 commit 54cad9e

17 files changed

Lines changed: 100 additions & 158 deletions

File tree

appconfiguration/spring-cloud-azure-appconfiguration-config/spring-cloud-azure-appconfiguration-config-convert-sample/spring-cloud-azure-appconfiguration-config-convert-sample-initial/README.md

Lines changed: 1 addition & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -191,73 +191,9 @@ In this section, you clone a containerized Spring Boot application and test it l
191191
<dependency>
192192
<groupId>com.azure.spring</groupId>
193193
<artifactId>spring-cloud-azure-appconfiguration-config</artifactId>
194-
<version>4.19.0</version>
194+
<version>6.1.0</version>
195195
</dependency>
196196
```
197-
198-
1. Create a new file called *AzureCredentials.java* and add the code below.
199-
200-
```java
201-
/*
202-
* Copyright (c) Microsoft Corporation. All rights reserved.
203-
* Licensed under the MIT License. See LICENSE in the project root for
204-
* license information.
205-
*/
206-
package sample.convert;
207-
208-
import com.azure.core.credential.TokenCredential;
209-
import com.azure.identity.EnvironmentCredentialBuilder;
210-
import com.microsoft.azure.spring.cloud.config.AppConfigurationCredentialProvider;
211-
import com.microsoft.azure.spring.cloud.config.KeyVaultCredentialProvider;
212-
213-
public class AzureCredentials implements AppConfigurationCredentialProvider, KeyVaultCredentialProvider{
214-
215-
@Override
216-
public TokenCredential getKeyVaultCredential(String uri) {
217-
return getCredential();
218-
}
219-
220-
@Override
221-
public TokenCredential getAppConfigCredential(String uri) {
222-
return getCredential();
223-
}
224-
225-
private TokenCredential getCredential() {
226-
return new EnvironmentCredentialBuilder().build();
227-
}
228-
229-
}
230-
```
231-
232-
1. Create a new file called *AppConfiguration.java*. And add the code below.
233-
234-
```java
235-
/*
236-
* Copyright (c) Microsoft Corporation. All rights reserved.
237-
* Licensed under the MIT License. See LICENSE in the project root for
238-
* license information.
239-
*/
240-
package sample.convert;
241-
242-
import org.springframework.context.annotation.Bean;
243-
import org.springframework.context.annotation.Configuration;
244-
245-
@Configuration
246-
public class AppConfiguration {
247-
248-
@Bean
249-
public AzureCredentials azureCredentials() {
250-
return new AzureCredentials();
251-
}
252-
}
253-
```
254-
255-
1. Create a new folder in your resources directory called META-INF. Then in that folder create a file called *spring.factories* and add.
256-
257-
```factories
258-
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
259-
sample.convert.AppConfiguration
260-
```
261197
262198
### Run the updated sample
263199

appconfiguration/spring-cloud-azure-feature-management-web/spring-cloud-azure-feature-management-web-sample/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@
4949
<groupId>org.springframework.boot</groupId>
5050
<artifactId>spring-boot-starter-thymeleaf</artifactId>
5151
</dependency>
52+
<dependency>
53+
<groupId>com.azure.spring</groupId>
54+
<artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
55+
</dependency>
5256
<dependency>
5357
<groupId>com.azure.spring</groupId>
5458
<artifactId>spring-cloud-azure-feature-management-web</artifactId>

appconfiguration/spring-cloud-azure-feature-management-web/spring-cloud-azure-feature-management-web-sample/src/main/java/com/example/FeatureFilter.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@
44

55
import java.io.IOException;
66

7-
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
9+
import org.springframework.beans.factory.annotation.Autowired;
10+
import org.springframework.stereotype.Component;
811

912
import com.azure.spring.cloud.feature.management.FeatureManager;
13+
1014
import jakarta.servlet.Filter;
1115
import jakarta.servlet.FilterChain;
1216
import jakarta.servlet.ServletException;
1317
import jakarta.servlet.ServletRequest;
1418
import jakarta.servlet.ServletResponse;
15-
import org.slf4j.Logger;
16-
import org.slf4j.LoggerFactory;
17-
import org.springframework.beans.factory.annotation.Autowired;
18-
import org.springframework.stereotype.Component;
1919

2020
@Component
2121
public class FeatureFilter implements Filter {
@@ -28,7 +28,7 @@ public class FeatureFilter implements Filter {
2828
@Override
2929
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
3030
throws IOException, ServletException {
31-
if (!featureManager.isEnabledAsync("Beta").block()) {
31+
if (!featureManager.isEnabled("beta")) {
3232
chain.doFilter(request, response);
3333
return;
3434
}

appconfiguration/spring-cloud-azure-feature-management-web/spring-cloud-azure-feature-management-web-sample/src/main/java/com/example/HelloController.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,20 @@
22
// Licensed under the MIT License.
33
package com.example;
44

5-
import com.azure.spring.cloud.feature.management.FeatureManager;
6-
import com.azure.spring.cloud.feature.management.web.FeatureGate;
7-
import com.azure.spring.cloud.feature.management.web.FeatureManagerSnapshot;
8-
import org.slf4j.Logger;
9-
import org.slf4j.LoggerFactory;
105
import org.springframework.beans.factory.annotation.Autowired;
116
import org.springframework.boot.context.properties.ConfigurationProperties;
127
import org.springframework.stereotype.Controller;
138
import org.springframework.ui.Model;
149
import org.springframework.web.bind.annotation.GetMapping;
1510

11+
import com.azure.spring.cloud.feature.management.FeatureManager;
12+
import com.azure.spring.cloud.feature.management.web.FeatureGate;
13+
import com.azure.spring.cloud.feature.management.web.FeatureManagerSnapshot;
14+
1615

1716
@Controller
1817
@ConfigurationProperties("controller")
1918
public class HelloController {
20-
private static final Logger LOGGER = LoggerFactory.getLogger(HelloController.class);
2119

2220
@Autowired
2321
private FeatureManager featureManager;
@@ -27,10 +25,10 @@ public class HelloController {
2725

2826
@GetMapping("/privacy")
2927
public String getRequestBased(Model model) {
30-
model.addAttribute("Beta", featureManager.isEnabledAsync("beta").block());
31-
model.addAttribute("isDarkThemeS1", featureManagerSnapshot.isEnabledAsync("dark-theme").block());
32-
model.addAttribute("isDarkThemeS2", featureManagerSnapshot.isEnabledAsync("dark-theme").block());
33-
model.addAttribute("isDarkThemeS3", featureManagerSnapshot.isEnabledAsync("dark-theme").block());
28+
model.addAttribute("Beta", featureManager.isEnabled("beta"));
29+
model.addAttribute("isDarkThemeS1", featureManagerSnapshot.isEnabled("dark-theme"));
30+
model.addAttribute("isDarkThemeS2", featureManagerSnapshot.isEnabled("dark-theme"));
31+
model.addAttribute("isDarkThemeS3", featureManagerSnapshot.isEnabled("dark-theme"));
3432
return "privacy";
3533
}
3634

@@ -47,7 +45,7 @@ public String getRedirected(Model model) {
4745

4846
@GetMapping(value = {"", "/", "/welcome"})
4947
public String mainWithParam(Model model) {
50-
model.addAttribute("Beta", featureManager.isEnabledAsync("beta").block());
48+
model.addAttribute("Beta", featureManager.isEnabled("beta"));
5149
return "welcome";
5250
}
5351
}

appconfiguration/spring-cloud-azure-feature-management-web/spring-cloud-azure-feature-management-web-sample/src/main/java/com/example/TestComponent.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@
44

55
import java.util.concurrent.ExecutionException;
66

7-
import com.azure.spring.cloud.feature.management.FeatureManager;
87
import org.springframework.beans.factory.annotation.Autowired;
98
import org.springframework.stereotype.Component;
109

10+
import com.azure.spring.cloud.feature.management.FeatureManager;
11+
1112
@Component
1213
public class TestComponent {
1314

1415
@Autowired
1516
private FeatureManager featureManager;
1617

1718
public String test() throws InterruptedException, ExecutionException {
18-
if (featureManager.isEnabledAsync("Beta").block()) {
19+
if (featureManager.isEnabled("beta")) {
1920
return "Beta";
2021
}
2122
return "Original";

appconfiguration/spring-cloud-azure-feature-management-web/spring-cloud-azure-feature-management-web-sample/src/main/java/com/example/filters/Random.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
// Licensed under the MIT License.
33
package com.example.filters;
44

5+
import org.springframework.stereotype.Component;
6+
57
import com.azure.spring.cloud.feature.management.filters.FeatureFilter;
68
import com.azure.spring.cloud.feature.management.models.FeatureFilterEvaluationContext;
7-
import org.springframework.stereotype.Component;
89

910
@Component("Random")
1011
public class Random implements FeatureFilter {
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,18 @@
11
spring:
22
thymeleaf:
33
cache: false
4+
config:
5+
import: azureAppConfiguration
46
cloud:
57
azure:
68
appconfiguration:
7-
watch:
8-
enabled: True
9-
delay: 5s
10-
config:
11-
message: Hi
12-
feature-management:
13-
feature-flags:
14-
-
15-
id: beta
16-
enabled: true
17-
-
18-
id: dark-theme
19-
enabled: true
20-
conditions:
21-
client-filters:
22-
-
23-
name: Random
24-
parameters:
25-
chance: "50"
26-
-
27-
id: beta-ab
28-
enabled: true
29-
conditions:
30-
client-filters:
31-
-
32-
name: Random
33-
parameters:
34-
chance: "50"
35-
-
36-
name: ClientFilter
37-
parameters:
38-
clientIp: 10.0.0.1
9+
stores:
10+
-
11+
endpoint: ${CONFIGSTORE_ENDPOINT}
12+
feature-flags:
13+
enabled: true
14+
monitoring:
15+
enabled: true
16+
triggers:
17+
-
18+
key: sentinel
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,21 @@
1-
.appconfig:
2-
featureflag/Beta: >-
3-
{"id":"Beta","description":"Test
4-
Feature","enabled":true,"conditions":{"client_filters":[{"name":"Random","parameters":{"chance":"50"}}]}}
1+
feature_management:
2+
feature_flags:
3+
- id: beta
4+
enabled: true
5+
- id: beta-ab
6+
enabled: true
7+
conditions:
8+
client_filters:
9+
- name: Random
10+
parameters:
11+
chance: '50'
12+
- name: ClientFilter
13+
parameters:
14+
clientIp: 10.0.0.1
15+
- id: dark-theme
16+
enabled: true
17+
conditions:
18+
client_filters:
19+
- name: Random
20+
parameters:
21+
chance: '50'

appconfiguration/spring-cloud-azure-feature-management-web/spring-cloud-azure-feature-management-web-sample/src/main/resources/templates/BetaA.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
66
<title>Feature Management with Spring Cloud Azure</title>
77

8-
<link rel="stylesheet" href="/css/main.css">
8+
<link rel="stylesheet" th:href="@{/css/main.css}">
99
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
1010

1111
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>

appconfiguration/spring-cloud-azure-feature-management-web/spring-cloud-azure-feature-management-web-sample/src/main/resources/templates/BetaB.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
66
<title>Feature Management with Spring Cloud Azure</title>
77

8-
<link rel="stylesheet" href="/css/main.css">
8+
<link rel="stylesheet" th:href="@{/css/main.css}">
99
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
1010

1111
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>

0 commit comments

Comments
 (0)