1. 스프링부트 기본 설정 관련
@SpringBootApplication
- 스프링부트 애플리케이션의 시작점임을 명시
- @Configuration, @EnableAutoConfiguration, @ComponentScan 을 결합한 어노테이션
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
@EnableAutoConfiguration
- 스프링부트가 클래스패스에 있는 라이브러리와 애플리케이션의 설정을 기반으로 자동 설정을 활성화
@Configuration
- Java 기반의 설정 파일임을 명시
- @Bean 어노테이션과 함께 사용하여 스프링 빈을 생성
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyService();
}
}
@ComponentScan
- 특정 패키지를 기준으로 컴포넌트(@Component, @Service, @Repository, @Controller 등)를 검색하여 스프링 컨텍스트에 등록
@PropertySource
- 특정 프로퍼티 파일을 읽어 애플리케이션에 설정값으로 주입
@PropertySource("classpath:application.properties")
public class AppConfig { }
2. 컴포넌트 스캔 및 빈 등록 관련
@Component
- 스프링이 관리하는 빈으로 등록하기 위해 사용
- 모든 계층에서 공통적으로 사용할 수 있음
@Service
- 비즈니스 로직을 처리하는 서비스 클래스에 사용
- @Component의 특수화된 형태
@Repository
- 데이터 액세스 계층(DAO 클래스)에서 사용
- 데이터베이스와 상호작용하는 클래스임을 명시
- 예외 변환 (AOP기반) 기능을 추가
@Controller
- 웹 요청을 처리하는 클래스임을 명시
@RestController
- @Controller와 @ResponseBody를 합친 어노테이션
- JSON/XML 형식으로 HTTP 응답을 생성
3. 요청/응답 매핑 관련 (Spring MVC)
@RequestMapping
- URL과 HTTP 메서드를 클래스 또는 메서드에 매핑
속성 :
- value : 요청 URL
- method : HTTP 메서드(GET, POST 등)
@RequestMapping(value = "/users", method = RequestMethod.GET)
public List<User> getUsers() { }
※ 클래스에 걸면 그안의 메서드들의 경로 공통 설정
@Controller
@RequiredArgsConstructor
@RequestMapping("/question")
public class QuestionController {
@GetMapping("/list")
public String list(Model model, @RequestParam(defaultValue = "0") int page) {}
}
→ list 메서드의 경로는 question/list
@GetMapping / @PostMapping / @PutMapping / @DeleteMapping
- 특정 HTTP 메서드에 대한 요청을 처리하는 간편한 어노테이션
@GetMapping("/users")
public List<User> getUsers() { }
@RequestParam
- 쿼리 파라미터 또는 폼 데이터를 매개변수로 바인딩
@GetMapping("/users")
public User getUser(@RequestParam String name) { }
※ 쿼리스트링 (?name=@@@) 에서 name 값을 받아옴
@PathVariable
- URL 경로의 일부를 매개변수로 바인딩
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) { }
※ @RequestParam 과 같이 URL에서 데이터를 받아오지만, @PathVariable 은 하나의 데이터만 받아올 수 있다
@RequestBody
- 요청 본문(body JSON으로)을 객체로 변환하여 매핑
@PostMapping("/users")
public void createUser(@RequestBody User user) { }
@ResponseBody
- 반환 값을 HTTP 응답 본문에 직접 전달
@ResponseStatus
- 메서드에서 반환하는 HTTP 상태 코드를 명시적으로 설정
@ResponseStatus(HttpStatus.CREATED)
@PostMapping("/users")
public void createUser(@RequestBody User user) { }
4. 데이터 검증 및 바인딩
@Valid
- 요청 데이터의 유효성을 검사
@NotNull, @Size, @Email 등
- 데이터 검증을 위한 제약 조건 설정
@ModelAttribute
- 요청 파라미터를 객체에 바인딩
@PostMapping("/users")
public void createUser(@ModelAttribute User user) { }
5. 트랜잭션 관리
@Transactional
- 메서드나 클래스에 트랜잭션 처리를 적용
속성 :
- readOnly : 읽기 전용 트랜잭션 여부
- rollbackFor : 롤백할 예외 지정
@Transactional
public void updateUser(User user) { }
6. Spring Security
@Secured
- 메서드 수준에서 접근 권한을 제어
@PreAuthorize / @PostAuthorize
- SpEL (Spring Expression Language) 을 사용하여 권한을 검사
7. 기타 자주 사용하는 어노테이션
@Value
- 프로퍼티 값을 주입
@Value("${app.name}")
private String appName;
@Profile
- 특정 환경(Profile)에서만 빈을 활성화
@Profile("dev")
@Service
public class DevService { }
@Scheduled
- 스케줄링 작업을 수행
@Scheduled(fixedRate = 5000)
public void scheduleTask() { }
@Async
- 비동기 메서드를 정의
@Async
public void performTask() { }
출처 : ChatGPT
'BE > Spring & Spring Boot' 카테고리의 다른 글
[Spring Boot] DTO (0) | 2025.01.04 |
---|---|
[Spring Boot, JPA] 관련 어노테이션 (0) | 2025.01.01 |
[Spring Boot] Validation 유효성 검사 (0) | 2024.12.30 |
[Spring Boot] Thymeleaf 타임리프 (0) | 2024.12.29 |
[Spring Boot] Page (0) | 2024.12.27 |