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>4.0.8-SNAPSHOT</version>
</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:
| Property | Default | Description |
|---|---|---|
atmosphere.packages |
(none) | Comma-separated packages to scan for Atmosphere annotations |
atmosphere.servlet-path |
/atmosphere/* |
Servlet URL mapping |
atmosphere.session-support |
false |
Enable 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.order |
0 |
Servlet load-on-startup order |
atmosphere.init-params |
(none) | Map of any ApplicationConfig key/value |
AtmosphereServlet-- the servlet instanceAtmosphereFramework-- the framework for programmatic configurationRoomManager-- the room API for presence and message historyAtmosphereHealthIndicator-- Actuator health check (whenspring-boot-healthis 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| Property | Default | Description |
|---|---|---|
atmosphere.grpc.enabled |
false |
Enable gRPC transport server |
atmosphere.grpc.port |
9090 |
gRPC server port |
atmosphere.grpc.enable-reflection |
true |
Enable 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:
./mvnw -Pnative package -pl samples/spring-boot-chat
./samples/spring-boot-chat/target/atmosphere-spring-boot-chatRequires GraalVM JDK 25+ (Spring Boot 4.0 / Spring Framework 7 baseline).
- Spring Boot Chat -- rooms, presence, REST API, Micrometer metrics, Actuator health
- Spring Boot AI Chat -- built-in AI client
- Spring Boot Spring AI Chat -- Spring AI adapter
- Spring Boot MCP Server -- MCP tools, resources, prompts
- Spring Boot OTel Chat -- OpenTelemetry tracing with Jaeger