Skip to main content

Spring Debugger

A Spring-aware debugging experience for IntelliJ IDEA Community. Explyt attaches a lightweight javaagent to your debug session and enriches the debugger with information the standard debugger cannot see: the live application context, the active transaction, and the runtime values behind your configuration properties.

Enabling it

Spring debug mode is on by default. You can toggle it from the Explyt Spring tool window with Enable Spring Debug / Disable Spring Debug, or from Settings → Tools → Explyt Spring → Spring Boot with the Enable Spring debug mode checkbox.

Your build and run configuration are patched automatically to attach the agent, and reverted when the session ends.

What you get

The Spring context in the debugger tree

While stopped at a breakpoint, the Variables tree gains Explyt nodes showing all active beans from the current context. Beans that are not part of the active context are visually marked, which makes context membership obvious at a glance.

Active transaction

The transaction in effect at the current breakpoint is displayed in the debugger tree — useful when you are trying to work out whether you are inside the transaction you expected, and with which propagation.

Evaluate Expression helpers

The Evaluate dialog gains special variables that give you direct access to the running container:

ExpressionReturns
Explyt.contextThe live ApplicationContext.
Explyt.getBeanFactory()The bean factory.
Explyt.getEnvironment()The environment, including resolved property sources.

From there you can call any bean method on the running application. For example, evaluate Explyt.context.getBean(OrderService.class).findAll() to exercise a service without writing a scratch file.

Running Spring Data repository methods

Repository methods get inline run markers during a debug session. Clicking one pre-fills the Evaluate Expression dialog with the call, so you can execute a query against the live application and inspect the result immediately.

Runtime property values as Code Vision

Open a .properties or .yml file during an Explyt debug session and each key shows its actual runtime value inline, labelled "Explyt: property runtime value".

This resolves the question that configuration bugs usually come down to: not what the file says, but which PropertySource won. The hint identifies the source that supplied the value, so profile overrides, environment variables, and command-line arguments stop being guesswork.

Remote debugging

You can attach to an already-running JVM that was started with JDWP plus the Explyt javaagent. The remote session supports breakpoints, runtime PropertySource resolution, the BeanDefinition view, transaction information, and automatic web URL detection.

Further reading

See also: Native Context Mode · Tool windows · Troubleshooting