Skip to content
Back to skills

Spring Boot Architecture

ASecurity

Circular dependencies usually mean two components own responsibilities that are too tightly coupled. First map the dependency graph and move shared business rules into a third service or domain component. Keep the intended direction explicit: controllers/adapters depend on services, and services do not depend on controllers. For a collaboration that is naturally asynchronous, replace the direct call with an event. For example, `OrderService` can publish `OrderPlaced`; notification handling co...

  • 549 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 5, 2026
developmentgotestingapi

Works with

  • api

Security analysis

A100/100

Pro scans all 11 files and shows the line behind each finding

Scanned September 5, 2026

npx -y skills add HoangNguyen0403/agent-skills-standard --skill spring-boot-architecture --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Spring Boot Architecture?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Spring Boot Architecture
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hoangnguyen0403-spring-boot-architecture-9db4939e/badge)](https://www.skillsdirectory.com/skills/hoangnguyen0403-spring-boot-architecture-9db4939e)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
Circular dependencies usually mean two components own responsibilities that are too tightly coupled. First map the dependency graph and move shared business rules into a third service or domain component. Keep the intended direction explicit: controllers/adapters depend on services, and services do not depend on controllers.

For a collaboration that is naturally asynchronous, replace the direct call with an event. For example, `OrderService` can publish `OrderPlaced`; notification handling consumes it without `OrderService` importing `NotificationService`. For synchronous behavior, introduce a narrow interface owned by the inner layer and have the outer adapter implement it, rather than making services call controllers or concrete infrastructure classes.

Use constructor injection with final dependencies so cycles fail at startup and are visible in the design. Avoid hiding them with `@Lazy`, service locators, `ApplicationContext.getBean()`, or field injection; those defer the design problem and make unit testing harder. Split god classes and keep repositories limited to persistence. Verify the resulting graph, transaction boundaries, and event idempotency, and use DTOs/records at API boundaries instead of entities.


Files in this skill

  • eval-1.baseline.md777 B
  • eval-1.with-skill.md1.2 KB
  • eval-2.baseline.md690 B
  • eval-2.with-skill.md1.2 KB
  • eval-3.baseline.md694 B
  • eval-3.with-skill.md1004 B
  • trigger-1.md132 B
  • trigger-2.md102 B
  • trigger-3.md126 B
  • trigger-4.md127 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…