这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions microservices-modules/micronaut-configuration/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## Micronaut

This module contains articles about Micronaut version 4 major.

### Relevant Articles:
-
157 changes: 157 additions & 0 deletions microservices-modules/micronaut-configuration/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.baeldung.micronaut</groupId>
<artifactId>micronaut-configuration</artifactId>
<version>0.1</version>
<packaging>${packaging}</packaging>
<name>micronaut-configuration</name>

<parent>
<groupId>com.baeldung</groupId>
<artifactId>microservices-modules</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>

<dependencies>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-runtime</artifactId>
<version>${micronaut.version}</version>
</dependency>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-http-client</artifactId>
<version>${micronaut.version}</version>
</dependency>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-inject</artifactId>
<version>${micronaut.version}</version>
</dependency>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-http-server-netty</artifactId>
<version>${micronaut.version}</version>
</dependency>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-jackson-databind</artifactId>
<version>${micronaut.version}</version>
</dependency>
<dependency>
<groupId>io.micronaut.validation</groupId>
<artifactId>micronaut-validation</artifactId>
<version>${micronaut.validation.version}</version>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>2.2</version>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.12</version>
<scope>runtime</scope>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>${junit.jupiter.version}</version>
<type>pom</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.micronaut.test</groupId>
<artifactId>micronaut-test-junit5</artifactId>
<version>${micronaut.test.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.micronaut.test</groupId>
<artifactId>micronaut-test-rest-assured</artifactId>
<version>${micronaut.test.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.reactivex.rxjava3</groupId>
<artifactId>rxjava</artifactId>
<version>3.1.6</version>
<scope>compile</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${jdk.version}</source>
<target>${release.version}</target>
<annotationProcessorPaths combine.children="append">
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
</path>
<path>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-inject-java</artifactId>
<version>${micronaut.version}</version>
</path>
<path>
<groupId>io.micronaut.validation</groupId>
<artifactId>micronaut-validation-processor</artifactId>
<version>${micronaut.validation.version}</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<arg>-Amicronaut.processing.group=${project.groupId}</arg>
<arg>-Amicronaut.processing.module=${project.artifactId}</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>

<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jdk.version>17</jdk.version>
<release.version>17</release.version>
<packaging>jar</packaging>

<micronaut.version>4.4.3</micronaut.version>
<exec.mainClass>com.baeldung.micronaut.httpfilters.ServerApplication</exec.mainClass>
<micronaut.validation.version>4.6.1</micronaut.validation.version>
<micronaut.runtime>netty</micronaut.runtime>
<micronaut.test.version>4.3.0</micronaut.test.version>
<junit.jupiter.version>5.9.1</junit.jupiter.version>
</properties>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.baeldung.micronaut.httpfilters;

import io.micronaut.runtime.Micronaut;

public class ServerApplication {

public static void main(String[] args) {
Micronaut.run(ServerApplication.class, args);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.baeldung.micronaut.httpfilters.controller;

import io.micronaut.http.HttpResponse;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Controller("/filters-annotations")
public class FilteredController {

@Get("/endpoint1")
public HttpResponse<String> endpoint1() {
return HttpResponse.ok("Endpoint 1");
}

@Get("/endpoint2")
public HttpResponse<String> endpoint2() {
return HttpResponse.ok("Endpoint 2");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.baeldung.micronaut.httpfilters.filters;

import static com.baeldung.micronaut.httpfilters.utils.CustomHttpHeaders.CUSTOM_HEADER_KEY;
import static com.baeldung.micronaut.httpfilters.utils.CustomHttpHeaders.X_TRACE_HEADER_KEY;

import io.micronaut.core.order.Ordered;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.MutableHttpResponse;
import io.micronaut.http.annotation.RequestFilter;
import io.micronaut.http.annotation.ResponseFilter;
import io.micronaut.http.annotation.ServerFilter;
import io.micronaut.scheduling.TaskExecutors;
import io.micronaut.scheduling.annotation.ExecuteOn;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@ServerFilter(patterns = { "**/endpoint*" })
public class CustomFilter implements Ordered {

@RequestFilter
@ExecuteOn(TaskExecutors.BLOCKING)
public void filterRequest(HttpRequest<?> request) {
String customRequestHeader = request.getHeaders()
.get(CUSTOM_HEADER_KEY);
log.info("request header: {}", customRequestHeader);
}

@ResponseFilter
public void filterResponse(MutableHttpResponse<?> res) {
res.getHeaders()
.add(X_TRACE_HEADER_KEY, "true");
}

@Override
public int getOrder() {
return 2;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.baeldung.micronaut.httpfilters.filters;

import static com.baeldung.micronaut.httpfilters.utils.CustomHttpHeaders.PRIVILEGED_USER_HEADER_KEY;

import org.reactivestreams.Publisher;

import io.micronaut.core.order.Ordered;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.MutableHttpResponse;
import io.micronaut.http.annotation.Filter;
import io.micronaut.http.filter.HttpServerFilter;
import io.micronaut.http.filter.ServerFilterChain;
import io.reactivex.rxjava3.core.Flowable;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Filter(patterns = { "**/*1" })
public class PrivilegedUsersEndpointFilter implements HttpServerFilter, Ordered {

@Override
public Publisher<MutableHttpResponse<?>> doFilter(HttpRequest<?> request, ServerFilterChain chain) {
log.info("Privileged user was filtered");

return Flowable.fromPublisher(chain.proceed(request))
.doOnNext(response -> response.getHeaders()
.add(PRIVILEGED_USER_HEADER_KEY, "true"));
}

@Override
public int getOrder() {
return 3;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.baeldung.micronaut.httpfilters.filters;

import static com.baeldung.micronaut.httpfilters.utils.CustomHttpHeaders.REQUEST_ID_HEADER_KEY;

import java.util.UUID;

import io.micronaut.core.annotation.Order;
import io.micronaut.core.order.Ordered;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.MutableHttpResponse;
import io.micronaut.http.annotation.RequestFilter;
import io.micronaut.http.annotation.ServerFilter;
import io.micronaut.http.filter.FilterContinuation;
import io.micronaut.scheduling.TaskExecutors;
import io.micronaut.scheduling.annotation.ExecuteOn;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@ServerFilter(patterns = { "**/endpoint*" })
@Order(1)
public class RequestIDFilter implements Ordered {

@RequestFilter
@ExecuteOn(TaskExecutors.BLOCKING)
public void filterRequest(HttpRequest<?> request, FilterContinuation<MutableHttpResponse<?>> continuation) {
String requestIdHeader = request.getHeaders()
.get(REQUEST_ID_HEADER_KEY);
if (requestIdHeader == null || requestIdHeader.trim()
.isEmpty()) {
requestIdHeader = UUID.randomUUID()
.toString();
log.info("request ID not received. Created and will return one with value: [{}]", requestIdHeader);
} else {
log.info("request ID received. Request ID: [{}]", requestIdHeader);
}

MutableHttpResponse<?> res = continuation.proceed();

res.getHeaders()
.add(REQUEST_ID_HEADER_KEY, requestIdHeader);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.baeldung.micronaut.httpfilters.utils;

public class CustomHttpHeaders {

private CustomHttpHeaders() {
}

public static final String X_TRACE_HEADER_KEY = "X-Trace-Enabled";
public static final String REQUEST_ID_HEADER_KEY = "Request-ID";
public static final String CUSTOM_HEADER_KEY = "custom-header";
public static final String PRIVILEGED_USER_HEADER_KEY = "Privileged-User";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
micronaut:
server:
port: 21000
context-path: /micronaut-configuration-tutorials
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<configuration>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<!-- Uncomment these lines to see the request logs -->
<!--
<logger name="io.micronaut.http.client" level="TRACE" />
<logger name="io.micronaut.http.server" level="DEBUG" />
-->

<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Loading