spring-rs projects are also supported.
- New Project Wizard - Create summer-rs projects with plugin selection, example code generation, and crates.io dependency search
- TOML Configuration Support - Smart completion, validation, navigation, and documentation for
app.tomlconfig files - Environment Variable Support - Auto-completion, validation, documentation, and navigation for
${VAR}references in TOML - Search Everywhere - Global search for HTTP routes, scheduled jobs, stream listeners, and components
- Unified Tool Window - Browse all summer-rs items: Endpoints, Jobs, Stream Listeners, Components, Configurations, Plugins
- Gutter Line Markers - Visual icons for routes, jobs, stream listeners, cache, sa-token, Socket.IO, middlewares
- Route Conflict Detection - Cross-file duplicate route detection with click-to-navigate QuickFix
#[auto_config]Completion - Auto-complete configurator types (WebConfigurator,JobConfigurator)- Dependency Injection Validation - Validates
#[inject(component)]types with framework component whitelists,#[component], and manualapp.add_component(...)registrations - Run Configuration - Dedicated summer-rs run configuration with custom icons
- JSON to Rust Struct - Convert JSON to Rust struct definitions with serde attributes
- Custom Icons - summer-rs themed icons for config files
- RustRover 2025.1+ or IntelliJ IDEA 2023.3+ with the Rust plugin installed
- A Rust project using
summer-rsdependencies (spring-rsprojects are also supported)
- Open your IDE and go to Settings/Preferences > Plugins
- Click Marketplace and search for "Summer Rs"
- Click Install and restart your IDE
Or install manually:
- Download the plugin ZIP from Releases
- Go to Settings/Preferences > Plugins > Gear icon > Install Plugin from Disk...
- Select the downloaded ZIP file
Double-press Shift to open Search Everywhere, then search for summer-rs items across your entire project.
Supported item types:
- HTTP Routes — Search by path (e.g.,
/api/users) or handler name - Scheduled Jobs — Search by function name; displays cron/delay/rate expression
- Stream Listeners — Search by topic name
- Components — Search for
#[derive(Service)],#[component], Configuration, and Plugin definitions
Each result shows an icon, name, details, and type badge. Click to navigate directly to the source code.
The plugin provides comprehensive IDE support for summer-rs configuration files (app.toml, app-dev.toml, app-prod.toml, etc.).
Auto-complete section names, keys, and values based on Rust struct definitions annotated with #[derive(Configurable)] #[config_prefix = "xxx"].
Enum fields show all available variants from the Rust enum definition.
Ctrl+Click (or Cmd+Click on macOS) on any TOML key or section to jump directly to the corresponding Rust struct field.
Real-time inspections for:
- Unknown sections
- Unknown keys
- Type mismatches (e.g., string where integer expected)
- Invalid enum values
Quick-fixes are available for common issues:
- Add/remove quotes
- Wrap value in array
- Convert to inline table
Hover over any TOML key or section (Ctrl+Q / F1) to see:
- Field type
- Default value
- Doc comments from Rust source
- Possible enum values
Full IDE support for ${VAR} and ${VAR:default} environment variable references in TOML configuration files.
Type ${ in a TOML value to get suggestions from multiple sources (in priority order):
.envfiles — Variables defined in.envat crate root and workspace root- Already-used variables — Variables referenced in other TOML config files
- summer-rs known variables —
SUMMER_ENV,SPRING_ENV,DATABASE_URL,REDIS_URL,HOST,PORT,LOG_LEVEL,RUST_LOG,MAIL_*,STREAM_URI,OTEL_*, etc. - System environment — All system environment variables
- Warning for undefined variables (not in
.envor system env) - No warning if a default value is provided (
${VAR:fallback}) - Error for malformed references (empty name, invalid characters)
Hover over ${VAR} (Ctrl+Q) to see:
- Variable name
- Current value (from system env or
.envfile) - Default value (if specified)
- Source (
.envfile path or "system environment")
Ctrl+Click on ${VAR_NAME} to jump to the variable definition in your .env file.
The summer-rs tool window (right sidebar) provides a unified view of all summer-rs items in your project.
Switch between different item types using the Type dropdown:
| Type | Description |
|---|---|
| Endpoint | HTTP routes (#[get], #[post], Router::new().route()) |
| Job | Scheduled tasks (#[cron], #[fix_delay], #[fix_rate]) |
| Stream Listener | Message stream handlers (#[stream_listener("topic")]) |
| Component | Services and declarative components (#[derive(Service)], #[component]) with injection points |
| Configuration | Config structs with key-value tree (Rust defaults + TOML overrides) |
| Plugin | Registered plugins (App::new().add_plugin(XxxPlugin)) |
- Tree View — Items organized by crate > module > file
- Module Filter — Show items from specific crates only
- Search — Filter items by name, path, or expression
- Double-click — Navigate directly to the source code
- Right-click Menu — Copy path, jump to configuration, etc.
Rich gutter icons on Rust functions and structs, providing at-a-glance information about summer-rs annotations.
Color-coded HTTP method badges on handler functions. Supports both attribute macros (#[get("/path")]) and Router builder (Router::new().route()).
Clock icon on scheduled task functions. Hover to see the schedule expression:
#[cron("1/10 * * * * *")]— Cron expression#[fix_delay(10000)]— Fixed delay in milliseconds#[fix_rate(5000)]— Fixed rate in milliseconds#[one_shot(3000)]— One-time execution after delay
Listener icon on #[stream_listener] functions. Hover to see topics, consumer mode, and group ID.
Cache icon on #[cache("key_pattern")] functions. Hover to see key pattern, expire time, and condition.
Security icon on authentication/authorization annotations:
#[sa_check_login]— Login check#[sa_check_role("admin")]— Role check#[sa_check_permission("user:delete")]— Permission check#[sa_check_roles_and(...)]/#[sa_check_roles_or(...)]— Multiple roles#[sa_check_permissions_and(...)]/#[sa_check_permissions_or(...)]— Multiple permissions
Web icon on Socket.IO event handlers:
#[on_connection]— Connection handler#[on_disconnect]— Disconnect handler#[subscribe_message("event")]— Message subscription#[on_fallback]— Fallback handler
Middleware icon on #[middlewares(mw1, mw2, ...)] module attributes. Hover to see the middleware list.
Gutter icons indicate summer-rs services, #[component] factories, and their injection points.
Visual indicators for #[inject] fields showing dependency relationships. Click to navigate between services and injection sites.
The plugin detects duplicate route paths across all files within the same crate.
- Conflicts are highlighted with WARNING-level annotations
- Click the QuickFix to navigate directly to the conflicting handler function
- Detection respects crate boundaries — routes in different crates do not conflict
Auto-complete configurator types inside #[auto_config(...)] macros.
Supported configurators:
WebConfigurator— Register HTTP route handlers (fromsummer-web)JobConfigurator— Register scheduled tasks (fromsummer-job)
Real-time validation for #[inject(component)] fields.
- Warns if the injected component type is not registered as a
#[derive(Service)],#[component], or manualapp.add_component(...)in the project - Built-in whitelist for framework-provided components:
DbConn,Redis,Postgres,Mailer,Op,Producer,Operator
Create new summer-rs projects with a guided wizard.
Choose from 13 summer-rs plugins organized in a flat 2-column grid:
- Web —
summer-web(HTTP server with Axum) - gRPC —
summer-grpc(gRPC server with Tonic) - PostgreSQL —
summer-postgres(native PostgreSQL) - SQLx —
summer-sqlx(async SQL with SQLx) - Sea-ORM —
summer-sea-orm(ORM with SeaORM) - Stream —
summer-stream(message streams) - Mail —
summer-mail(email via Lettre) - Redis —
summer-redis(Redis client) - OpenDAL —
summer-opendal(unified storage) - Job —
summer-job(cron scheduling with Tokio-cron) - Apalis —
summer-apalis(background job processing) - sa-token —
summer-sa-token(session/permission auth) - OpenTelemetry —
summer-opentelemetry(tracing/metrics)
Search and add custom crate dependencies from crates.io:
- Left panel shows search results with pagination (auto-load on scroll)
- Right panel shows added dependencies
- All dependencies are deduplicated with plugin-provided crates in the generated
Cargo.toml
Optionally generate compilable example code for each selected plugin, based on official summer-rs examples.
Dedicated run configuration type with summer-rs branding.
Custom summer-rs icon on main() function for quick launch.
Right-click the gutter icon to:
- Run the application
- Debug the application
- Edit run configuration
Convert JSON to Rust struct definitions with proper serde attributes.
- Right-click in editor > JSON to Rust Struct, or
- Generate menu (Alt+Insert / Cmd+N) > JSON to Rust Struct
Paste your JSON and configure options:
- Struct name
- Derive macros (Serialize, Deserialize, Debug, Clone)
- Field visibility (pub)
- serde rename attributes
- Nested objects become nested structs
- Arrays become
Vec<T> - Null values become
Option<T> - camelCase automatically converts to snake_case with serde rename
- Mixed types become
serde_json::Value
summer-rs configuration files (app.toml, app-*.toml) display a custom leaf icon.
The plugin automatically detects summer-rs projects and remains compatible with legacy spring-rs projects by checking framework dependencies in Cargo.toml:
[dependencies]
summer = "0.5.0"
summer-web = "0.5.0"
summer-sqlx = "0.5.0"Legacy spring = "..."
and spring-* dependencies are also recognized.
No additional configuration is required.
# Clone the repository
git clone https://github.com/ouywm/intellij-spring-rs.git
cd intellij-spring-rs
# Build the plugin
./gradlew buildPlugin
# Run IDE with the plugin (for testing)
./gradlew runIde
# Run tests
./gradlew testBuild for different IDE versions:
# RustRover 2025.1+ (default)
./gradlew -PplatformVersion=251 buildPlugin
# IntelliJ IDEA 2024.1
./gradlew -PplatformVersion=241 buildPlugin
# IntelliJ IDEA 2023.3
./gradlew -PplatformVersion=233 buildPluginThe built plugin ZIP is located at build/distributions/.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If this plugin is helpful to you, please consider supporting me:

































