Repository navigation
This release is the last one for IntelliJ IDEA 2024.2 and 2024.3. Later releases support IntelliJ IDEA 2025.1 and newer.
Bean model that matches the running application
- Bean conditions follow Spring Boot:
@ConditionalOnProperty(also repeated,matchIfMissing,${VAR:default}),@ConditionalOnBooleanProperty, composed conditions and conditions on library classes are evaluated as Boot evaluates them (#496, #672, #759) - Web conditions follow Boot's web application type: servlet, reactive and client-only applications are told apart, and
spring.main.web-application-typeis honoured (#496) - Profiles work as in Spring:
@Profilevalues are alternatives, constants are read by value, andspring.profiles.groupactivates its member profiles (#548, #562, #529) - Beans that a profile turns off stay visible as inactive beans with their reason, in Search Everywhere and in the MCP bean tools (#634)
- Library
@Controllerand@Serviceclasses are beans only when a component scan covers them (#645) - A class registered by
@Importor@EnableConfigurationPropertiesfollows the conditions of the configuration that registers it; a plain@ConfigurationPropertiesclass is a bean only when@EnableConfigurationPropertiesor@ConfigurationPropertiesScanregisters it, and a component also listed in@EnableConfigurationPropertiesis two beans, as in Spring (#496, #741, #782) - Bean names follow Spring's generator:
URLServiceandABTestControllerkeep their names, nested classes are namedouter.Inner, and beans registered by@Importor@EnableConfigurationPropertiesget the fully qualified names Spring gives them (#758, #781) @Bean(name = …), composed@Beanannotations and covariant@Beanoverrides give the bean name and type Spring gives (#506, #592, #594, #680)- A component scan declared in a dependency module, a default-package application and an
@EnableAutoConfigurationapplication now give the correct beans, and an application in test sources no longer widens the beans of production code (#495, #710, #532, #772) - Starters that are only on the application's runtime classpath, such as
runtimeOnlydependencies, contribute their beans, so injecting them no longer reports "No beans" (#780) - MyBatis mappers (
@MapperScan,@Mapper) and Spring Integration@MessagingGatewayinterfaces are beans (#598) - Injection points with type arguments find beans whose arguments come from a supertype, such as a
@Bean TestGenericV1forTestGeneric<String>, also insideList,Optional,ObjectProviderandMap, in bean gutters, the autowiring inspection andexplyt_find_spring_bean(#799)
New inspections and quick fixes
- Bean name collisions that fail startup: two
@Beanmethods with the same bean name on Spring Framework 6.2 and later, and a@Beanmethod overridden across two registered configurations (#597, #668, #686, #689, #698, #714) - A composed
@Beanname that conflicts with its meta-annotation and fails startup on Spring Framework 6 (#632) - A stereotype annotation on an abstract class that Spring does not register, with a quick fix (#601)
- A
@Controlleror@RestControllervalue that looks like a request path, with a quick fix that moves it to@RequestMapping(#534) - An Actuator endpoint extended by more than one
@EndpointWebExtension, which fails startup (#655) - Spring Boot 3.4 and 3.5
@MockBeanand@SpyBeandeprecation, with a quick fix to@MockitoBeanand@MockitoSpyBean - Spring Boot 3
management.endpoint.httptrace.*keys, with a quick fix tohttpexchanges - An enum configuration value or a hint value that is not in Spring's recommended spelling, with a quick fix
- Fewer false errors: bean-name checks in
@Lookup,@DependsOn, cache annotations and@WithUserDetailsskip classes that Spring does not register (#783)
Endpoints and HTTP
- Spring Explyt installs in IDEs without the JCEF module (e.g. Android Studio); the OpenAPI preview, its "Run in Swagger" and "Open in UI" gutters, and Spring Initializr wizard are available only where JCEF is present (#817)
- The Endpoints tool window lists the built-in Actuator endpoints (
health,info,metricsand others) next to project endpoints, with exposure and access as Boot reads them (#476, #512, #315) - Find an endpoint from a URL that you paste from a browser, a log or a curl command (#453)
- Functional routes:
router { }, WebMvc.fn, JavaRouterFunctionsbuilders, nestedpath()andnest()prefixes and verb predicates are listed as Spring serves them (#415, #580, #606, #627) - Request mappings declared on an implemented interface or a superclass, composed mapping annotations and property placeholders in paths are resolved, and a path taken from a constant updates when you edit the constant (#533, #651, #672, #451)
- "Run in Swagger" and the HTTP client use the context path, servlet path and server port that the application declares, also through nested placeholders (#451, #779)
- MockMvc, WebTestClient and RestClient requests in tests are found as endpoint usages, also for URLs built from templates and URI builders (#463, #467, #497)
- OpenAPI 3.2 support, refreshed OpenAPI 3.0 and 3.1 schemas, Swagger UI 5.32.15 and a working OAuth2 Authorize flow in the preview
- "Generate OpenApi Doc" adds missing operations and keeps the documented ones (#640, #641, #662)
Configuration properties
- Navigation works through list indexes, map keys in bracket notation and constructor-bound properties (#383, #384, #396, #471)
- Enum values are accepted and completed in any relaxed spelling (
request-headersforREQUEST_HEADERS) - Fewer false errors: keys used in any Spring annotation placeholder, in several files or from a test module are resolved (#118, #380, #381, #570)
logging.level.<name>navigates to the logger package or class and to logging groups- The spellchecker no longer flags Spring's declared key segments (#363)
Events
- Navigate from a listener to events that Spring and libraries publish, such as
ApplicationReadyEventandAuthenticationSuccessEvent(#426, #427, #431)
Native Context Mode
- Link a Gradle
bootRunrun configuration (#376) - Sync failures name the class that is missing, and broken project links heal themselves
- A sync started before the module has a JDK, for example while the build is still being imported, fails at once with a message naming the module instead of an IDE error and a stalled sync
MCP tools for AI agents
- New
explyt_find_spring_beantells an agent which bean Spring injects at a field or a constructor parameter - Endpoint contracts describe the JSON that Jackson writes: polymorphic types, Spring Data
Page, HATEOAS models, naming strategies and enums (#557, #639) explyt_trace_spring_call_chainshows the tests that a change breaks and the@Transactionaland@Asyncadvice around each method (#452)- All tools page their answers within a character budget, with a page revision that stays stable while you edit unrelated files, and report built-in Actuator endpoints with exposure and access (#635)
Performance and stability
- Fewer UI freezes when a project opens, when a run configuration is selected and on the first action after startup (#294, #307)
- Faster highlighting of
application.yamland.propertiesfiles - Gradle
gradlewandmvnware executable in projects generated through Spring Initializr (#60) - Compatible with IntelliJ IDEA 2026.3: endpoint actions and the configuration metadata intention no longer depend on classes that 2026.3 removes