1. @SpringBootApplication
설명: Spring Boot 애플리케이션의 시작점에 사용되는 어노테이션입니다. @Configuration
, @EnableAutoConfiguration
, @ComponentScan
을 포함하는 복합 어노테이션입니다.
사용 위치: 메인 클래스에 선언
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2. @RestController
설명: 컨트롤러를 정의하며, 반환값을 JSON 형태로 변환하여 클라이언트에 전달합니다. @Controller
와 @ResponseBody
를 합친 역할을 합니다.
사용 위치: 컨트롤러 클래스에 선언
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, Spring Boot!";
}
}
3. HTTP 메서드 매핑 어노테이션
- @GetMapping: GET 요청을 처리
- @PostMapping: POST 요청을 처리
- @PutMapping: PUT 요청을 처리
- @DeleteMapping: DELETE 요청을 처리
@RestController
public class ApiController {
@GetMapping("/get")
public String getMethod() {
return "GET Method";
}
@PostMapping("/post")
public String postMethod() {
return "POST Method";
}
}
4. @RequestParam
설명: HTTP 요청 파라미터를 메서드 매개변수로 매핑합니다.
@GetMapping("/greet")
public String greet(@RequestParam String name) {
return "Hello, " + name;
}
5. @PathVariable
설명: URL 경로 변수 값을 메서드 매개변수로 매핑합니다.
@GetMapping("/user/{id}")
public String getUser(@PathVariable int id) {
return "User ID: " + id;
}
6. @Autowired
설명: 스프링 컨테이너에서 관리하는 Bean을 주입합니다.
@RestController
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
}
7. @Service
설명: 서비스 레이어 클래스에 사용되며, 비즈니스 로직을 처리하는 클래스임을 나타냅니다.
@Service
public class UserService {
public String getUser() {
return "User";
}
}
8. @Repository
설명: 데이터 접근 계층(DAO) 클래스에 사용되며, 데이터베이스와의 상호작용을 담당합니다.
@Repository
public class UserRepository {
public String findUser() {
return "Database User";
}
}
9. @Component
설명: 개발자가 직접 정의한 클래스를 스프링 빈으로 등록할 때 사용됩니다.
@Component
public class CustomComponent {
public String getMessage() {
return "Hello from Component";
}
}
10. @Configuration
설명: 스프링 설정 클래스를 정의하며, @Bean
을 사용하여 직접 Bean을 등록할 수 있습니다.
@Configuration
public class AppConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
11. @Entity
설명: JPA를 사용할 때 데이터베이스 테이블과 매핑되는 클래스를 정의합니다.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
12. @Transactional
설명: 메서드나 클래스에 트랜잭션 관리를 적용합니다.
@Service
public class UserService {
@Transactional
public void saveUser(User user) {
// DB 저장 로직
}
}
13. @ExceptionHandler
설명: 컨트롤러에서 발생하는 특정 예외를 처리합니다.
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity handleException(Exception ex) {
return new ResponseEntity<>(ex.getMessage(), HttpStatus.BAD_REQUEST);
}
}