Here’s a comprehensive, categorized summary table of key Spring annotations used across all major areas of the Spring ecosystem — including core, dependency injection, web, data (JPA), AOP, configuration, security, testing, and bootstrapping.
✅ Spring Annotations Summary Table (All Areas)
Category
Annotation
Purpose
🔧 Core / Component Scanning
@Component
Generic Spring-managed component
@Service
Business/service layer component
@Repository
DAO component; translates exceptions
@Controller
Web controller (MVC, returns views)
@RestController
REST API controller (@Controller + @ResponseBody)
@ComponentScan
Scans packages for annotated components
Category
Dependency Injection
@Autowired
Automatically injects dependencies
@Qualifier
Resolves ambiguity when multiple beans of the same type exist
@Inject
JSR-330 alternative to @Autowired
@Value("${property}")
Injects value from properties/yaml
@Required
Ensures a bean property is injected (legacy use)
Category
Configuration / Bootstrapping
@Configuration
Declares a class that defines Spring beans
@Bean
Defines a Spring bean method inside @Configuration
@Import
Imports other configuration classes
@PropertySource
Loads external .properties files
@EnableAutoConfiguration
Enables Spring Boot auto-config (used by @SpringBootApplication)
@SpringBootApplication
Combines @Configuration, @EnableAutoConfiguration, and @ComponentScan
Category
Spring MVC / Web
@RequestMapping
Maps HTTP requests to methods (can use method attribute)
@GetMapping, @PostMapping, etc.
Shorthand for HTTP verbs
@PathVariable
Binds URI template variable
@RequestParam
Binds query parameters
@RequestBody
Binds request body to a method parameter
@ResponseBody
Returns value as response body
@ModelAttribute
Binds form data to a model
@SessionAttributes
Stores attributes in session
Category
JPA / Data
@Entity
Marks a class as a JPA entity (DB table)
@Table(name = "...")
Specifies table name
@Id
Primary key field
@GeneratedValue(...)
Auto-generates IDs
@Column(...)
Maps field to DB column
@OneToMany, @ManyToOne, etc.
Define entity relationships
@JoinColumn
Specifies the foreign key
@Repository
DAO layer marker
@EnableJpaRepositories
Enables Spring Data JPA
Category
AOP (Aspect-Oriented Programming)
@Aspect
Marks a class as an aspect (cross-cutting logic)
@Before, @After, @Around
Define when advice runs relative to join points
@Pointcut
Defines reusable pointcut expressions
@EnableAspectJAutoProxy
Enables support for handling components marked with @Aspect
Category
Spring Security
@EnableWebSecurity
Enables Spring Security web integration
@PreAuthorize
Method-level access control (SpEL support)
@Secured
Restricts method access to certain roles
@WithMockUser
Mocks a user in tests
Category
Testing
@SpringBootTest
Loads full application context
@WebMvcTest
Tests only web layer (controllers)
@DataJpaTest
Tests JPA repositories
@MockBean
Mocks a Spring bean in the context
@Autowired
Injects real or mocked bean into test
@TestConfiguration
Defines custom test configuration class
@ExtendWith(SpringExtension.class)
Integrates Spring TestContext with JUnit 5
Would you like a downloadable version (Markdown, PDF, etc.) or examples for a specific area like Spring Boot REST APIs, Spring Data, or Spring Security?