1. Spring Boot 관련 어노테이션
@SpringBootApplication
- Spring Boot 애플리케이션의 진입점. 자동 설정, 컴포넌트 스캔을 포함
@Component
- Spring이 관리하는 빈(Bean)으로 등록하는 기본 어노테이션
- @Service, @Repository, @Controller의 부모 개념
@ComponentScan
- 특정 패키지를 스캔하여 Bean으로 등록
@Bean
- 개발자가 직접 Bean을 생성할 때 사용
- @Configuration 클래스 내에서 선언하여 객체를 관리 가능
@Configuration
- 해당 클래스를 설정(Configuration) 클래스로 지정
- @Bean 메서드를 포함하여 Bean을 등록할 때 사용
@Value("${jwt.secret.key}")
- 설정 파일(application.properties 또는 application.yml)에서 값을 가져옴
- 환경변수, 프로퍼티 값 등을 사용할 때 유용
@PostConstruct
- Spring이 해당 Bean을 생성한 후 초기화 단계에서 실행할 메서드를 지정
@Service
- 비즈니스 로직을 처리하는 클래스를 Bean으로 등록
@Transactional
- 트랜잭션을 관리하는 어노테이션
- 메서드가 정상 실행되면 commit, 예외 발생 시 rollback
2. Spring Security 관련 어노테이션
@EnableWebSecurity
- Spring Security를 활성화하여 보안 설정을 적용
@EnableMethodSecurity(securedEnabled = true)
- @Secured, @PreAuthorize 등의 메서드 기반 보안 활성화
@EnableGlobalMethodSecurity(prePostEnabled = true)
- @PreAuthorize 등의 메서드 수준 보안 활성화
@Secured
- 특정 역할(Role)을 가진 사용자만 접근 가능하도록 제한
- ROLE_ 접두사를 반드시 사용해야 함
- 메서드 단위에서만 사용 가능 (클래스 단위에서는 사용 불가)
@PreAuthorize
- 더 강력한 권한 검사 기능 제공 (SpEL 사용 가능)
- hasRole(), hasAuthority(), #username == authentication.name 같은 논리적 조건을 설정할 수 있음
- 메서드 & 클래스단위에서 사용 가능
@AuthenticationPrincipal
- 현재 인증된 사용자 정보 가져오기
3. Spring MVC 관련 어노테이션
@RestController
- 해당 클래스를 REST API 컨트롤러로 설정
- @Controller + @ResponseBody 기능을 포함
@RequestMapping("/auth")
- 해당 컨트롤러의 기본 URL을 설정
@RestControllerAdvice
- 전역 예외 처리를 위한 컨트롤러
@PathVariable
- URL 경로에서 값을 가져옴 (/users/{id} → @PathVariable Long id)
@RequestParam
- 쿼리 파라미터 값을 가져옴 (/search?query=apple → @RequestParam String query)
@RequestBody
- JSON 요청 데이터를 Java 객체로 변환
@ResponseBody
- 객체를 JSON 형태로 변환하여 반환
@ExceptionHandler(ClientException.class)
- 특정 예외(ClientException)가 발생했을 때 실행할 핸들러
4. JPA 관련 어노테이션
@EnableJpaAuditing
- 엔티티가 생성되거나 수정되는 시점을 감시
- 생성일, 생성자, 수정일, 수정자를 자동으로 기록
@Entity
- 해당 클래스를 JPA 엔티티(Entity)로 선언
@Table(name = "members")
- 매핑할 데이터베이스 테이블 이름을 지정
@Id
- 해당 필드를 기본 키(Primary Key)로 설정
@GeneratedValue(strategy = GenerationType.IDENTITY)
- 기본 키 자동 생성 전략 지정
- IDENTITY: 데이터베이스에서 자동 증가(AUTO_INCREMENT) 사용
@Column(nullable = false, unique = true)
- 데이터베이스 컬럼 속성 지정
@JoinColumn(name = "column_name")
- 외래 키(Foreign Key) 설정
@OneToMany, @ManyToOne, @OneToOne, @ManyToMany
- 엔티티 간 관계 설정
@MappedSuperclass
- 공통 필드를 정의하는 부모 클래스에 사용
- 엔티티에서 상속받아 사용 가능
@EntityListeners(AuditingEntityListener.class)
- 엔티티의 생성 및 수정 이벤트를 감지하여 자동 처리
@CreatedDate
- 엔티티가 생성된 날짜를 자동 저장
@LastModifiedDate
- 엔티티가 수정된 날짜를 자동 저장
@Temporal(TemporalType.TIMESTAMP)
- 날짜 필드(Date, LocalDateTime)의 저장 형식을 지정
5. Lombok 관련 어노테이션
@Slf4j(topic = "JwtUtil")
- 로그(Log)를 쉽게 사용할 수 있도록 하는 Lombok 어노테이션
- log.info("메시지") 같은 방식으로 로그 출력 가능
- 기본적으로 @Slf4j는 클래스 이름을 로그 카테고리(Logger Name)로 사용하지만, topic을 지정하면 해당 값이 Logger Name이 됨. ex) [INFO] JwtUtil - JWT 토큰 생성
@RequiredArgsConstructor
- final이 붙은 필드만 포함하는 생성자 자동 생성
@NoArgsConstructor
- 기본 생성자를 자동 생성하며, 접근 제어자 설정 가능
@AllArgsConstructor
- 모든 필드를 포함한 생성자 자동 생성
@Autowired
- 스프링이 의존성을 자동으로 주입할 때 사용(단, 값 변경이 가능하니 주의해서 사용)
@Getter
- 클래스의 속성 값을 반환
@Setter
- 객체 속성 값을 설정하거나 변경
@Builder
- Builder 패턴을 자동 생성
6. Jackson 관련 어노테이션
@JsonInclude(JsonInclude.Include.NON_NULL)
- JSON 직렬화 시 null 값은 제외하고 변환
'개발 > 부트캠프' 카테고리의 다른 글
본캠프 : 동시성 제어(Concurrency Control) (0) | 2025.04.03 |
---|---|
본캠프 : Redis 기초 (0) | 2025.04.02 |
본캠프 : @EnableJpaAuditing (0) | 2025.03.27 |
본캠프 : methodargumentnotvalidexception (0) | 2025.03.27 |
본캠프 : 개인 과제(플러스 심화) 트러블 슈팅 (0) | 2025.03.20 |