Compile-time dependency injection, configuration, AOP, and startup optimization.
@Singleton
public class UserService {
private final UserRepository repository;
private final EventPublisher eventPublisher;
// Constructor injection (preferred)
public UserService(UserRepository repository, EventPublisher eventPublisher) {
this.repository = repository;
this.eventPublisher = eventPublisher;
}
}
// Factory beans
@Factory
public class ClientFactory {
@Singleton
@Named("primary")
public HttpClient primaryClient() {
return HttpClient.create(URI.create("https://api.primary.com"));
}
@Singleton
@Named("fallback")
public HttpClient fallbackClient() {
return HttpClient.create(URI.create("https://api.fallback.com"));
}
}
@ConfigurationProperties("app")
public record AppConfig(
String name,
int maxConnections,
DatabaseConfig database
) {
public record DatabaseConfig(
String url,
String username
) {}
}
app:
name: MyMicronautApp
max-connections: 100
database:
url: jdbc:postgresql://localhost/db
username: admin
@Controller("/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@Get("/{id}")
public User findById(Long id) {
return userService.findById(id);
}
@Post
@Status(HttpStatus.CREATED)
public User create(@Valid @Body CreateUserRequest request) {
return userService.create(request);
}
}
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer