Skip to content

Instantly share code, notes, and snippets.

@martijndwars
Created April 11, 2025 13:27
Show Gist options
  • Save martijndwars/b887f59d8ffb7a52dbb7399332dbf957 to your computer and use it in GitHub Desktop.
Save martijndwars/b887f59d8ffb7a52dbb7399332dbf957 to your computer and use it in GitHub Desktop.
package com.example;
import io.micronaut.context.ApplicationContext;
import io.micronaut.runtime.Micronaut;
public class Application {
public static void main(String[] args) {
ApplicationContext applicationContext = Micronaut.run(Application.class, args);
/*
* Bean1 depends on Bean2, which means:
*
* - We need to construct Bean2 before Bean1.
* - We need to destroy Bean1 before Bean2.
*/
// This is good. Bean1 depends on Bean2. Bean2 is destroyed before bean1.
Bean1 bean1 = applicationContext.findBean(Bean1.class).get();
bean1.sayHi();
}
}
package com.example;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
@Singleton
public class Bean1 {
@Inject
Bean2 bean2;
@PostConstruct
public void postConstruct() {
System.out.println("Bean1 postConstruct");
}
@PreDestroy
public void preDestroy() {
System.out.println("Bean1 postDestroy");
}
public void sayHi() {
System.out.println("Hi from bean1");
bean2.sayHi();
}
}
package com.example;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import jakarta.inject.Singleton;
@Singleton
public class Bean2 {
@PostConstruct
public void postConstruct() {
System.out.println("Bean2 postConstruct");
}
@PreDestroy
public void preDestroy() {
System.out.println("Bean2 postDestroy");
}
public void sayHi() {
System.out.println("Hi from bean2");
}
}
/Library/Java/JavaVirtualMachines/graalvm-jdk-23.0.2+7.1/Contents/Home/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:65311,suspend=y,server=n -javaagent:/Users/mdwars/Library/Caches/JetBrains/IdeaIC2024.3/captureAgent/debugger-agent.jar -Dkotlinx.coroutines.debug.enable.creation.stack.trace=false -Ddebugger.agent.enable.coroutines=true -Dkotlinx.coroutines.debug.enable.flows.stack.trace=true -Dkotlinx.coroutines.debug.enable.mutable.state.flows.stack.trace=true -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath /Users/mdwars/Downloads/demo/target/classes:/Users/mdwars/.m2/repository/io/micronaut/micronaut-http-server-netty/4.8.9/micronaut-http-server-netty-4.8.9.jar:/Users/mdwars/.m2/repository/org/slf4j/slf4j-api/2.0.16/slf4j-api-2.0.16.jar:/Users/mdwars/.m2/repository/io/micronaut/micronaut-http-server/4.8.9/micronaut-http-server-4.8.9.jar:/Users/mdwars/.m2/repository/io/micronaut/micronaut-http/4.8.9/micronaut-http-4.8.9.jar:/Users/mdwars/.m2/repository/io/micronaut/micronaut-core-reactive/4.8.9/micronaut-core-reactive-4.8.9.jar:/Users/mdwars/.m2/repository/io/micronaut/micronaut-context-propagation/4.8.9/micronaut-context-propagation-4.8.9.jar:/Users/mdwars/.m2/repository/io/micronaut/micronaut-router/4.8.9/micronaut-router-4.8.9.jar:/Users/mdwars/.m2/repository/io/micronaut/micronaut-core/4.8.9/micronaut-core-4.8.9.jar:/Users/mdwars/.m2/repository/io/micronaut/micronaut-http-netty/4.8.9/micronaut-http-netty-4.8.9.jar:/Users/mdwars/.m2/repository/io/micronaut/micronaut-buffer-netty/4.8.9/micronaut-buffer-netty-4.8.9.jar:/Users/mdwars/.m2/repository/io/netty/netty-codec-http2/4.1.118.Final/netty-codec-http2-4.1.118.Final.jar:/Users/mdwars/.m2/repository/io/netty/netty-handler/4.1.118.Final/netty-handler-4.1.118.Final.jar:/Users/mdwars/.m2/repository/io/netty/netty-resolver/4.1.118.Final/netty-resolver-4.1.118.Final.jar:/Users/mdwars/.m2/repository/io/netty/netty-transport-native-unix-common/4.1.118.Final/netty-transport-native-unix-common-4.1.118.Final.jar:/Users/mdwars/.m2/repository/io/netty/netty-codec-http/4.1.118.Final/netty-codec-http-4.1.118.Final.jar:/Users/mdwars/.m2/repository/io/netty/netty-common/4.1.118.Final/netty-common-4.1.118.Final.jar:/Users/mdwars/.m2/repository/io/netty/netty-buffer/4.1.118.Final/netty-buffer-4.1.118.Final.jar:/Users/mdwars/.m2/repository/io/netty/netty-transport/4.1.118.Final/netty-transport-4.1.118.Final.jar:/Users/mdwars/.m2/repository/io/netty/netty-codec/4.1.118.Final/netty-codec-4.1.118.Final.jar:/Users/mdwars/.m2/repository/io/projectreactor/reactor-core/3.7.2/reactor-core-3.7.2.jar:/Users/mdwars/.m2/repository/org/reactivestreams/reactive-streams/1.0.4/reactive-streams-1.0.4.jar:/Users/mdwars/.m2/repository/io/micronaut/serde/micronaut-serde-jackson/2.14.0/micronaut-serde-jackson-2.14.0.jar:/Users/mdwars/.m2/repository/io/micronaut/micronaut-inject/4.8.9/micronaut-inject-4.8.9.jar:/Users/mdwars/.m2/repository/jakarta/inject/jakarta.inject-api/2.0.1/jakarta.inject-api-2.0.1.jar:/Users/mdwars/.m2/repository/jakarta/annotation/jakarta.annotation-api/2.1.1/jakarta.annotation-api-2.1.1.jar:/Users/mdwars/.m2/repository/io/micronaut/micronaut-jackson-core/4.8.9/micronaut-jackson-core-4.8.9.jar:/Users/mdwars/.m2/repository/io/micronaut/micronaut-json-core/4.8.9/micronaut-json-core-4.8.9.jar:/Users/mdwars/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.18.2/jackson-core-2.18.2.jar:/Users/mdwars/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.18.2/jackson-annotations-2.18.2.jar:/Users/mdwars/.m2/repository/io/micronaut/micronaut-context/4.8.9/micronaut-context-4.8.9.jar:/Users/mdwars/.m2/repository/io/micronaut/micronaut-aop/4.8.9/micronaut-aop-4.8.9.jar:/Users/mdwars/.m2/repository/io/micronaut/serde/micronaut-serde-api/2.14.0/micronaut-serde-api-2.14.0.jar:/Users/mdwars/.m2/repository/io/micronaut/serde/micronaut-serde-support/2.14.0/micronaut-serde-support-2.14.0.jar:/Users/mdwars/.m2/repository/ch/qos/logback/logback-classic/1.5.16/logback-classic-1.5.16.jar:/Users/mdwars/.m2/repository/ch/qos/logback/logback-core/1.5.16/logback-core-1.5.16.jar:/Users/mdwars/Applications/IntelliJ IDEA Community Edition.app/Contents/lib/idea_rt.jar com.example.Application
Connected to the target VM, address: '127.0.0.1:65311', transport: 'socket'
__ __ _ _
| \/ (_) ___ _ __ ___ _ __ __ _ _ _| |_
| |\/| | |/ __| '__/ _ \| '_ \ / _` | | | | __|
| | | | | (__| | | (_) | | | | (_| | |_| | |_
|_| |_|_|\___|_| \___/|_| |_|\__,_|\__,_|\__|
15:25:21.291 [main] INFO io.micronaut.runtime.Micronaut - Startup completed in 265ms. Server Running: http://localhost:8080
Bean2 postConstruct
Bean1 postConstruct
Hi from bean1
Hi from bean2
15:25:26.696 [Thread-0] INFO io.micronaut.runtime.Micronaut - Embedded Application shutting down
Bean2 postDestroy
Bean1 postDestroy
Disconnected from the target VM, address: '127.0.0.1:65311', transport: 'socket'
Process finished with exit code 143 (interrupted by signal 15:SIGTERM)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment