Skip to content

Spring Boot

Auto-configuration for running Atmosphere on Spring Boot 4.0+. Registers AtmosphereServlet, wires Spring DI into Atmosphere’s object factory, and exposes AtmosphereFramework and RoomManager as Spring beans.

<dependency>
<groupId>org.atmosphere</groupId>
<artifactId>atmosphere-spring-boot-starter</artifactId>
<version>LATEST</version> <!-- check Maven Central for latest -->
</dependency>
atmosphere:
packages: com.example.chat
@ManagedService(path = "/atmosphere/chat")
public class Chat {
@Inject
private BroadcasterFactory factory;
@Inject
private AtmosphereResource r;
@Ready
public void onReady() { }
@Disconnect
public void onDisconnect() { }
@Message(encoders = {JacksonEncoder.class}, decoders = {JacksonDecoder.class})
public Message onMessage(Message message) {
return message;
}
}

No additional configuration is needed beyond a standard @SpringBootApplication class.

All properties are under the atmosphere.* prefix:

PropertyDefaultDescription
atmosphere.packages(none)Comma-separated packages to scan for Atmosphere annotations
atmosphere.servlet-path/atmosphere/*Servlet URL mapping
atmosphere.session-supportfalseEnable HTTP session support
atmosphere.websocket-support(auto)Explicitly enable/disable WebSocket
atmosphere.broadcaster-class(default)Custom Broadcaster implementation FQCN
atmosphere.broadcaster-cache-class(default)Custom BroadcasterCache implementation FQCN
atmosphere.heartbeat-interval-in-seconds(default)Server heartbeat frequency
atmosphere.order0Servlet load-on-startup order
atmosphere.init-params(none)Map of any ApplicationConfig key/value
  • AtmosphereServlet — the servlet instance
  • AtmosphereFramework — the framework for programmatic configuration
  • RoomManager — the room API for presence and message history
  • AtmosphereHealthIndicator — Actuator health check (when spring-boot-health is on the classpath)

The starter can launch a gRPC server alongside the servlet container when atmosphere-grpc is on the classpath:

atmosphere:
grpc:
enabled: true
port: 9090
enable-reflection: true
PropertyDefaultDescription
atmosphere.grpc.enabledfalseEnable gRPC transport server
atmosphere.grpc.port9090gRPC server port
atmosphere.grpc.enable-reflectiontrueEnable gRPC server reflection

Define a GrpcHandler bean to handle gRPC events:

@Bean
public GrpcHandler grpcHandler() {
return new GrpcHandlerAdapter() {
@Override
public void onOpen(GrpcChannel channel) {
log.info("gRPC client connected: {}", channel.uuid());
}
@Override
public void onMessage(GrpcChannel channel, String message) {
log.info("gRPC message: {}", message);
}
};
}

Add opentelemetry-api to your classpath and provide an OpenTelemetry bean — the starter automatically registers AtmosphereTracing:

<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-api</artifactId>
</dependency>

Every Atmosphere request generates a trace span with transport, resource UUID, broadcaster, and action attributes. Disable with atmosphere.tracing.enabled=false.

When atmosphere-mcp is also on the classpath, an McpTracing bean is auto-created for MCP tool/resource/prompt call tracing.

When micrometer-core and MeterRegistry are on the classpath, the starter registers atmosphere.connections, atmosphere.messages, and atmosphere.broadcasters gauges.

The starter includes AtmosphereRuntimeHints for native image support:

Terminal window
./mvnw -Pnative package -pl samples/spring-boot-chat
./samples/spring-boot-chat/target/atmosphere-spring-boot-chat

Requires GraalVM JDK 25+ (Spring Boot 4.0 / Spring Framework 7 baseline).