The exam is precise about words. These definitions are the ones we use in every lesson — learn them exactly. Grows as the course does.
BeanFactory with enterprise extras: event publishing, i18n (MessageSource), resource loading, and automatic BeanPostProcessor/BeanFactoryPostProcessor registration. It's what actually holds and wires your beans.UserDetailsService loads a user by name → UserDetails (username/password/authorities); GrantedAuthority = one role/permission; PasswordEncoder hashes passwords. Spring Security runs as a servlet filter chain.@EnableGlobalMethodSecurity. @PreAuthorize/@PostAuthorize use SpEL (prePostEnabled=true); @Secured uses role names (securedEnabled=true); @RolesAllowed is JSR-250 (jsr250Enabled=true). URL-based rules instead use antMatchers/mvcMatchers.@Before, @AfterReturning, @AfterThrowing, @After (finally), @Around.@EnableAutoConfiguration; classes listed in META-INF/spring.factories, each guarded by @Conditional annotations (@ConditionalOnClass, @ConditionalOnMissingBean, @ConditionalOnProperty). Override by defining your own bean (auto-config backs off), or exclude with @SpringBootApplication(exclude=...).@SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan. Place it on the main class; SpringApplication.run() boots the context and embedded server (Tomcat by default). A starter is a dependency descriptor; the parent POM / BOM manages versions.prefix) to a strongly-typed bean's fields — cleaner than many @Values. Property precedence (high→low): command-line args → env vars → application-{profile} → application.properties → @PropertySource → defaults.health, info, metrics, beans…) under /actuator. Two switches per endpoint: enabled (all except shutdown by default) and exposed (HTTP → only health; JMX → all). Expose more with management.endpoints.web.exposure.include. Health statuses: UP/DOWN/OUT_OF_SERVICE/UNKNOWN; custom checks via HealthIndicator; custom metrics via Micrometer's MeterRegistry; secure with Spring Security.@Autowired, resolution is by type first, then narrowed by @Qualifier / @Primary / bean name.ApplicationContext extends it. Lazy by default; ApplicationContext pre-instantiates singletons eagerly.postProcessBeforeInitialization / AfterInitialization. This is how proxies (AOP, @Transactional) get wrapped around beans.PropertySourcesPlaceholderConfigurer resolving ${...}.@Component and friends) to register them as beans. Enabled by @ComponentScan (included in @SpringBootApplication).HandlerMapping (find the handler) → HandlerAdapter (invoke it) → ViewResolver/View (render HTML) or HttpMessageConverter (serialise JSON for REST). Auto-configured by Spring Boot.SQLExceptions into these portable, technology-agnostic exceptions.Connection/Statement/ResultSet lifecycle, runs SQL, and translates SQLExceptions into DataAccessExceptions. A template-method + callback design; acquires a connection per operation, not at construction. query* = read, update = DML, execute = DDL.execution(* com.app.service.*.*(..)).@Primary marks the default bean when multiple candidates match by type; @Qualifier("name") selects a specific one at the injection point.@Profile("dev") registers a bean when dev is active; !prod negates, {"a","b"} is OR, "a & b" is AND. A bean with no @Profile is always active. Activated via spring.profiles.active, the SPRING_PROFILES_ACTIVE env var, or @ActiveProfiles in tests..properties file to the Environment's property sources (on a @Configuration class). Does not load YAML, and does not bind to a POJO — that's @ConfigurationProperties.this.method()) bypasses the proxy.CrudRepository / PagingAndSortingRepository / JpaRepository) that Spring Data implements as a runtime proxy. Hierarchy adds: CRUD → paging & sorting → JPA extras. Queries come from derived method names (findByEmailGreaterThan…) or an explicit @Query (JPQL, or native SQL with nativeQuery=true).singleton (default, one per container), prototype (new each request), plus web scopes request, session, application, websocket.GET, HEAD). Idempotent = repeating has the same effect as once (GET, PUT, DELETE). POST is neither. Key status codes: 200 OK, 201 Created, 204 No Content, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 500 Server Error.getForObject, getForEntity, postForObject, exchange…), using HttpMessageConverters. WebClient is the modern reactive alternative, but the exam tests RestTemplate.${...} vs #{...}${...} is a property placeholder resolved from the Environment by PropertySourcesPlaceholderConfigurer. #{...} is a SpEL expression evaluated at runtime — it can reference beans, call methods, use operators, and read systemProperties. They are not interchangeable, and SpEL does not itself resolve ${...}.@Component: @Service, @Repository (adds exception translation), @Controller/@RestController. All are detected by component scanning.DataSourceTransactionManager (JDBC), JpaTransactionManager (JPA), JtaTransactionManager (global/distributed). @Transactional and TransactionTemplate both delegate to it.RuntimeException) and Error, but commits on checked exceptions. Override with rollbackFor / noRollbackFor.@WebMvcTest (controllers + MockMvc, no services), @DataJpaTest (repositories + in-memory DB, rolls back), @JsonTest. Contrast @SpringBootTest, which loads the whole context.@MockBean puts a Mockito mock into the Spring ApplicationContext (so autowired collaborators receive it); a plain @Mock lives only in the test object. MockMvc tests controllers server-side without a real HTTP server.@Transactional method joins/creates transactions. Defaults to REQUIRED (join existing or start new); REQUIRES_NEW always starts a new one; NESTED uses savepoints.