Spring의 컨테이너와 빈

김이·2024년 11월 13일

Spring의 컨테이너와 빈

컨테이너

Spring 컨테이너는 애플리케이션에 필요한 객체들을 관리하고 제공하는 역할을 한다. 보통 ApplicationContext가 Spring 컨테이너 역할을 한다. 개발자는 객체 생성과 초기화를 직접 하지 않고, 필요한 객체를 컨테이너에 요청해 받아 쓴다. 이를 통해 객체 간의 의존성을 주입받고, 객체 생명 주기를 관리할 수 있다.

빈 (Bean)

빈은 Spring 컨테이너가 관리하는 객체를 의미한다. 일반적으로 애플리케이션 내에서 자주 사용되는 객체들을 빈으로 등록해 관리한다. 빈은 Spring이 주입해주는 객체이므로, 컨테이너에 의해 생성되고 소멸되는 생명 주기를 따른다. 빈은 주로 @Component, @Service, @Repository, @Controller와 같은 어노테이션을 통해 등록된다.

Spring Boot의 주요 어노테이션

1.  @SpringBootApplication
•   Spring Boot 애플리케이션의 시작점이다. @Configuration, @EnableAutoConfiguration, @ComponentScan을 포함하고 있어 애플리케이션을 설정하고 빈을 자동으로 등록한다.

2.	@RestController
•   RESTful 웹서비스를 개발할 때 사용한다. @Controller와 @ResponseBody를 함께 사용한 것과 동일하게 작동하며, JSON 형식의 데이터를 반환할 수 있다.

3.	@RequestMapping
•	특정 URL 경로에 대한 요청을 매핑하기 위해 사용된다. 클래스나 메서드에 적용하여 GET, POST, PUT, DELETE 등 HTTP 메서드를 처리할 수 있다.

4.	@Autowired
•	의존성 주입을 위해 사용된다. @Autowired가 붙은 필드나 생성자에 자동으로 빈을 주입한다.

5.	@Service
•	비즈니스 로직을 처리하는 서비스 계층을 정의할 때 사용한다. @Component의 확장으로, 주로 서비스 빈을 등록하기 위해 사용된다.

6.	@Repository
•	데이터 접근 객체(DAO)를 생성하기 위해 사용된다. 데이터베이스와 상호작용하는 클래스에 사용하며, Spring이 데이터 접근 예외를 처리할 수 있도록 한다.

7.	@Entity
•	JPA를 사용할 때 데이터베이스 테이블과 매핑되는 클래스를 정의한다. 데이터베이스 테이블의 구조를 코드로 표현하여 ORM 기능을 수행한다.

8.	@Transactional
•	메서드나 클래스에 트랜잭션 설정을 적용한다. 트랜잭션이 시작되고, 메서드 실행이 완료되면 자동으로 트랜잭션이 종료된다.
profile
공부!

0개의 댓글