Spring Properties Navigator is an IntelliJ IDEA plugin that adds reliable, bidirectional navigation between
Spring configuration keys and the Java code that defines or consumes them. It works in both .properties and
YAML (application.yml) files.
Install from the JetBrains Marketplace — in your IDE open Settings > Plugins > Marketplace, search for
Spring Properties Navigator, and click Install. Or get it from the web:
plugins.jetbrains.com/plugin/32536-spring-properties-navigator.
To install a local build from disk instead, see Install Locally below.
- Navigates
.propertiesand YAML keys to@ConfigurationPropertiesclasses and bindable members. - Reverse navigation: gutter icons on
@ConfigurationPropertiesmembers and@Value("${...}")injections jump to the configuration entries that set them. - Supports Spring relaxed names such as
display-name->displayName. - Supports indexed collection paths such as
items[0].display-name, and YAML sequences. - Resolves nested Java fields, record components, setters, and getters.
- Unwraps common containers: arrays,
List<T>,Map<K,V>, andOptional<T>. - Navigates keys backed only by direct
@Value("${...}")usages. - Hides Spring Boot unresolved-property warnings (in
.propertiesand YAML) only when the plugin can resolve the full key. - Configurable under
Settings | Tools | Spring Properties Navigator. - Includes light and dark plugin logos for the IDE plugin manager.
YAML support activates automatically when the bundled YAML plugin is enabled; the core .properties features
work without it.
Given:
@ConfigurationProperties(prefix = "sample.catalog")
public class CatalogProperties {
private List<CatalogItemProperties> items;
public List<CatalogItemProperties> getItems() {
return items;
}
public void setItems(List<CatalogItemProperties> items) {
this.items = items;
}
}and:
public class CatalogItemProperties {
private String displayName;
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
}this property key is navigable:
sample.catalog.items[0].display-name=Featured itemThe equivalent YAML is navigable too:
sample:
catalog:
items:
- display-name: Featured itemExpected targets:
sample.catalog->CatalogPropertiesitems->CatalogProperties.itemsdisplay-name->CatalogItemProperties.displayName
Reverse navigation works as well: a gutter icon next to CatalogProperties, its items member, or any
@Value("${...}") injection jumps to the matching keys in your .properties and YAML files.
Direct @Value usages are also supported:
public TaskRunner(@Value("${sample.task.retry-count}") int retryCount) {
}sample.task.retry-count=5- IntelliJ IDEA 2026.1.x or another compatible IntelliJ Platform IDE (build 261 or newer).
- Java 21 for building the plugin.
- Bundled Java and Properties IntelliJ plugins enabled in the target IDE.
- The bundled YAML plugin enabled to navigate YAML files (optional;
.propertiessupport works without it).
Use the production build task:
cd <repo-root>
./gradlew productionBuild --no-configuration-cacheThe plugin ZIP is created at:
build/distributions/spring-properties-navigator-1.0.0.zip
By default, Gradle resolves the IntelliJ Platform version declared in build.gradle. To build against a local IDE
installation instead, pass localIdeaPath:
./gradlew productionBuild -PlocalIdeaPath="/path/to/IntelliJ IDEA.app" --no-configuration-cacheYou can also set INTELLIJ_IDEA_PATH to avoid passing the property on every build.
cd <repo-root>
./gradlew runIdeIn the launched IDE:
- Open a Spring Boot project.
- Wait for project import and indexing.
- Open an
.propertiesfile. - Cmd-click a property key segment, or use
Navigate > Declaration or Usages.
- Run
./gradlew productionBuild --no-configuration-cache. - Open IntelliJ IDEA.
- Go to
Settings > Plugins. - Open the gear menu and choose
Install Plugin from Disk.... - Select
build/distributions/spring-properties-navigator-1.0.0.zip. - Restart the IDE.
Settings | Tools | Spring Properties Navigator exposes two toggles (both on by default):
- Hide "Cannot resolve configuration property" warnings for keys this plugin resolves.
- Show gutter icons on Java members that navigate to configuration files.
The project ships a unit and IDE test suite. Run it with:
./gradlew testIt covers the property-key parser, relaxed-name normalization, @Value placeholder parsing, and IDE-level
navigation for both .properties and YAML, plus whole-key resolution and the reverse-navigation gutter icons.
Continuous integration (GitHub Actions) builds and tests on every push and pull request via
.github/workflows/build.yml; pushing a v* tag publishes to the Marketplace via
.github/workflows/release.yml.
This plugin focuses on navigation and warning suppression for keys it can resolve. It does not provide completion, rename refactoring, or property generation.
Licensed under the MIT License.