1. 핵심 어노테이션
@SpringBootApplication
Spring Boot 애플리케이션의 시작점을 나타내는 어노테이션. 다음 세 가지 어노테이션을 포함:
- @Configuration: 해당 클래스가 Bean 설정을 포함함을 표시.
- @EnableAutoConfiguration: Spring Boot의 자동 설정 기능을 활성화.
- @ComponentScan: 컴포넌트 스캔을 활성화하여 @Component, @Service 등이 붙은 클래스를 찾아 Bean으로 등록.
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
2. 스테레오타입 어노테이션
@Component
일반적인 Spring 컴포넌트를 나타내는 기본 어노테이션. 자동 스캔 대상으로 등록.
@Service
비즈니스 로직을 처리하는 서비스 계층의 컴포넌트를 표시. @Component의 특수화된 형태.
@Repository
데이터 접근 계층(DAO)의 컴포넌트를 표시. 데이터베이스 예외를 Spring의 DataAccessException으로 변환하는 기능 제공.
@Controller
Spring MVC의 컨트롤러를 표시. 주로 View를 반환하는 컨트롤러에 사용.
@RestController
@Controller와 @ResponseBody를 합친 어노테이션. REST API를 위한 컨트롤러를 표시하며, 메서드 반환값을 HTTP 응답 본문으로 직접 전송.
3. 웹 관련 어노테이션
@RequestMapping
요청 URL을 메서드나 클래스에 매핑. HTTP 메서드, 경로, 파라미터 등 다양한 조건으로 매핑 가능.
@RequestMapping(value = "/users", method = RequestMethod.GET)
HTTP 메서드별 어노테이션
- @GetMapping: GET 요청 처리.
- @PostMapping: POST 요청 처리.
- @PutMapping: PUT 요청 처리.
- @DeleteMapping: DELETE 요청 처리.
- @PatchMapping: PATCH 요청 처리.
@RequestParam
URL 쿼리 파라미터나 폼 데이터를 메서드 파라미터에 바인딩.
@GetMapping("/users")
public List<User> getUsers(@RequestParam(required = false) String name) {
// 구현 코드
}
@PathVariable
URL 경로 변수를 메서드 파라미터에 바인딩.
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
// 구현 코드
}
@RequestBody
HTTP 요청 본문을 자바 객체로 변환하여 메서드 파라미터에 바인딩.
@PostMapping("/users")
public User createUser(@RequestBody User user) {
// 구현 코드
}
4. 데이터 접근 관련 어노테이션
@Entity
JPA 엔티티 클래스를 표시. 데이터베이스 테이블과 매핑.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 필드와 메서드
}
@Table
엔티티 클래스와 매핑할 데이터베이스 테이블 정보를 지정.
@Entity
@Table(name = "users")
public class User {
// 필드와 메서드
}
@Id
엔티티의 기본 키(Primary Key) 필드를 표시.
@GeneratedValue
기본 키 생성 전략을 지정.
@Column
엔티티 필드와 매핑할 테이블 컬럼 정보를 지정.
@Column(name = "user_name", nullable = false, length = 100)
private String name;
@Transactional
트랜잭션 범위와 동작을 지정. 메서드나 클래스에 적용 가능.
@Transactional(readOnly = true)
public User getUser(Long id) {
// 구현 코드
}
5. 의존성 주입 관련 어노테이션
@Autowired
의존성을 자동으로 주입. 생성자, 필드, 메서드에 적용 가능.
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
// 메서드
}
@Qualifier
같은 타입의 빈이 여러 개 있을 때 특정 빈을 지정.
@Autowired
@Qualifier("primaryDataSource")
private DataSource dataSource;
6. 설정 관련 어노테이션
@Configuration
Java 기반 설정 클래스를 표시.
@Configuration
public class AppConfig {
// Bean 정의 메서드
}
@Bean
메서드가 Spring 컨테이너에서 관리할 Bean을 생성함을 표시.
@Bean
public DataSource dataSource() {
// 데이터소스 설정 및 반환
}
@ConfigurationProperties
외부 설정 프로퍼티를 자바 객체에 바인딩.
@ConfigurationProperties(prefix = "app.mail")
public class MailProperties {
private String host;
private int port;
// getter와 setter
}
'Back-End' 카테고리의 다른 글
| [Spring] 빈 생명주기 (1) | 2025.04.22 |
|---|---|
| [Spring] 내용 정리 (1) | 2025.04.21 |
| [Spring] 기초 공부1 (1) | 2025.04.19 |
| [Spring] 기초 공부 (1) | 2025.04.15 |
| JDBC와 JPA (1) | 2025.04.07 |