일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- router
- sql연결
- 워드프레스
- SEO
- PostView
- web-vitals
- 리액트오류
- useLocation
- firebase
- 조건판단문
- 구글애널리틱스
- Thymeleaf
- 구글
- ChatGPT
- 중첩라우팅
- 리액트오류해결
- GA4
- URLSearchParams
- 구글알고리즘
- 구글바드
- 데이터베이스
- Polylang
- path variable
- useEffect
- useNavigate
- git사용자등록
- White HAT
- 플러그인
- mysql-select
- wp_post
- Today
- Total
개발천재
[Spring Boot] Annotation 개념 이해하기, 주요 어노테이션 본문
Annotation 기본 개념
Java에서 어노테이션과 Spring Boot에서 사용하는 어노테이션은 기본 개념은 같지만, 사용되는 목적과 방식에서 차이가 있다.
Java에서 어노테이션은 메타데이터(metadata)의 일종으로, 클래스, 메서드, 변수 등에 부가적인 정보를 제공하는 역할을 한다. 어노테이션 자체는 프로그램 로직에 영향을 주지 않지만, 런타임이나 컴파일 타임에 특정 처리를 수행할 수 있도록 도와주는 역할을 한다.
Spring Boot의 어노테이션은 Java 어노테이션을 활용하여 빈 관리, 의존성 주입, 트랜잭션 관리 등 다양한 기능을 자동으로 처리한다. Spring Boot에서는 어노테이션을 통해 설정을 최소화하고 자동화를 구현하는 것이 큰 특징이다.
Spring Boot 어노테이션은 주로 "컴포넌트 스캔", "의존성 주입", "애플리케이션 설정" 등을 위한 기능을 제공한다.
주요 어노테이션
- @Component, @Service, @Repository → Spring이 객체를 자동으로 관리
- @Autowired, @Qualifier → 의존성 주입(DI)
- @GetMapping, @PostMapping → 요청 처리
- @Transactional → 트랜잭션 관리
[ 요점정리 ]
- 어노테이션은 코드에 대한 추가 정보를 제공하고, Spring이 자동으로 동작하도록 도와준다.
- 어노테이션 덕분에 설정을 단순화하고 유지보수를 쉽게 할 수 있다.
어노테이션 (Annotation) 의 역할
✔ 설정(Configuration) 역할 → XML 설정 없이 어노테이션만으로 설정 가능
✔ 자동화(Auto-wiring) 역할 → @Autowired를 사용해 의존성 자동 주입
✔ 행동(Behavior) 제어 역할 → @Transactional, @Cacheable 같은 어노테이션으로 기능 추가
✔ 메타데이터 제공 역할 → 코드가 어떤 의미를 가지는지 설명 (예: @Override는 메서드 재정의 표시)
Spring의 기본 어노테이션
어노테이션 | 설명 |
@Component | Spring이 관리하는 일반적인 객체를 정의 |
@Controller | MVC에서 컨트롤러 역할을 하는 클래스 지정 |
@Service | 서비스 역할을 하는 클래스 지정 (비즈니스 로직) |
@Repository | 데이터베이스 관련 작업을 하는 클래스 지정 |
예를 들어, @Service를 사용하면 이 클래스를 자동으로 Bean으로 등록하고 관리해 준다.
@Service // 이 클래스는 서비스 역할을 함
public class UserService {
public String getUser() {
return "Hello, User!";
}
}
의존성 주입 관련 어노테이션
어노테이션 | 설명 |
@Autowired | 필요한 객체를 자동으로 주입 (DI) |
@Qualifier("이름") | 주입할 객체를 특정 이름으로 지정 |
@Inject | @Autowired와 같은 역할 (Java 표준) |
@Value("${설정값}") | application.properties의 값을 주입 |
예를 들어, @Autowired가 UserRepository 객체를 자동으로 찾아서 넣어준다.
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired // UserRepository를 자동으로 주입
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
요청 매핑 관련 어노테이션
어노테이션 | 설명 |
@RequestMapping("/경로") | 특정 URL과 메서드를 연결 |
@GetMapping("/경로") | GET 요청을 처리 |
@PostMapping("/경로") | POST 요청을 처리 |
@PutMapping("/경로") | PUT 요청을 처리 |
@DeleteMapping("/경로") | DELETE 요청을 처리 |
예를 들어, @GetMapping("/{id}")을 사용하면, GET 요청 시 특정 사용자 정보를 반환한다.
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public String getUser(@PathVariable String id) {
return "User ID: " + id;
}
}
트랜잭션 관련 어노테이션
어노테이션 | 설명 |
@Transactional | 트랜잭션을 관리하여 오류 발생 시 자동 롤백 |
예를 들어, @Transactional을 사용하면, 작업 도중 오류가 나면 이전 상태로 되돌려준다(롤백).
@Service
public class BankService {
@Transactional // 하나라도 실패하면 전체 롤백
public void transferMoney(Long senderId, Long receiverId, int amount) {
withdraw(senderId, amount);
deposit(receiverId, amount);
}
}
기타 유용한 어노테이션
어노테이션 | 설명 |
@RestController | @Controller + @ResponseBody (JSON 반환) |
@ResponseBody | 메서드의 반환값을 JSON으로 변환 |
@PathVariable | URL 경로 변수 값을 가져옴 |
@RequestParam | GET 또는 POST 요청의 파라미터 값을 가져옴 |
@ExceptionHandler | 예외가 발생했을 때 특정 메서드에서 처리 |
예를 들어, @RestController를 사용하면, 응답이 JSON이나 문자열로 바로 반환된다.
@RestController
@RequestMapping("/hello")
public class HelloController {
@GetMapping
public String sayHello() {
return "Hello, Spring!";
}
}
'개발 준비 > Spring Boot' 카테고리의 다른 글
[Spring Boot] Lombok 추가하기 (0) | 2025.02.10 |
---|---|
[Spring Boot] Git에 Push 하기(인텔리제이) (0) | 2025.02.10 |
[Spring Boot] Thymeleat를 이용한 구구단 만들기 (0) | 2025.02.10 |
[Spring Boot] 기초 개념 익히기, 역사와 배워야 하는 이유 (0) | 2025.02.07 |
[Spring Boot] Spring Initializr, 프로젝트 만들기 (0) | 2025.02.07 |