TIL
250116 목 TIL
파란배개
2025. 1. 16. 17:40
1. 스프링부트
- Spring Initializr를 통해 프로젝트를 생성할 수 있다.
- 스프링부트는 다양한 어노테이션과 기능을 제공하며, 개발자가 간편하게 애플리케이션을 만들 수 있도록 도와준다.
2. 스프링부트에서 Jackson
- 스프링부트에는 Jackson이 내장되어 있어 JSON화 되어 오가는 데이터의 직렬화와 역직렬화에 사용된다.
- REST API 응답 시 객체를 JSON으로 변환하거나, JSON 요청을 객체로 변환할 때 자동으로 동작한다.
Jackson 주요 어노테이션
@JsonProperty
: JSON 필드와 Java 필드를 매핑.@JsonIgnore
: 특정 필드를 직렬화/역직렬화에서 제외.@JsonFormat
: 날짜 및 시간 형식을 지정.
3. 스프링부트 주요 어노테이션
@Component
- 스프링이 이 클래스를 식별할 수 있도록 해주는 어노테이션.
- 스프링부트가 클래스를 읽어 메모리 저장소(컨텍스트/컨테이너)에 객체화(
new
를 통해)해서 저장한다. - 컨텍스트에 저장된 객체를 빈(Bean)이라고 한다.
- 빈 이름은 클래스 이름의 첫 글자를 소문자로 바꾼 형태다.
@Controller
- 내부적으로
@Component
가 포함되어 있다. - 해당 클래스도 빈이 된다.
@Service, @Repository
@Controller
와 기능적으로는 동일하지만, 클래스의 용도를 명확히 하기 위해 구분.
@ResponseBody
- 메서드의 리턴 값을 HTTP 응답 본문으로 변환.
@RestController
@Controller
+@ResponseBody
를 합친 역할.
@Configuration
- 빈이 될 만한 메서드를 찾는다.
- 메서드 위에
@Bean
을 붙이면, 메서드의 리턴 객체가 빈으로 컨텍스트에 저장된다. - 저장된 빈은
@Autowired
를 통해 주입 가능하다.
@Autowired
- 컨텍스트에서 관련된 빈을 찾아 해당 필드, 생성자, 메서드에 주입.
- 주입 대상 변수명과 빈 이름이 같아야 자동 연결된다.
@GetMapping
- 특정 URL 경로에 GET 요청을 매핑.
4. Lombok
- 코드 작성량을 줄이기 위한 라이브러리.
주요 어노테이션
@Builder
: 빌더 패턴을 제공.@RequiredArgsConstructor
: final이나 @NonNull 필드가 포함된 생성자 생성.@AllArgsConstructor
: 모든 필드 값을 받는 생성자 생성.@Getter
: 필드의 getter 메서드 생성.
5. @RequestParam
- URL에 전달된 쿼리 파라미터를 메서드 매개변수로 매핑.
- 예:
/write?name=John&age=30
@GetMapping("/write")
public String write(@RequestParam("name") String name, @RequestParam("age") int age) {
// name: "John", age: 30
}
특징
- 파라미터 이름과 변수명이 같으면
@RequestParam
생략 가능. - 값이 없으면
null
이 기본값. 기본값을 설정하려면@RequestParam(defaultValue = "기본값")
사용. - 필수 여부를 설정하려면
required
옵션 사용 (기본값:true
).
6. @PathVariable
- URL 경로의 일부를 변수로 받아 매핑.
@GetMapping("/posts/{id}")
public String getPost(@PathVariable("id") int id) {
// id: URL 경로에서 추출된 값
}
@RequestParam vs @PathVariable
@RequestParam
은 URL의 쿼리 파라미터를 매개변수로 받는다.- 예:
/write?comment=hello
@RequestParam("comment") String comment
→comment = "hello"
- 예:
@PathVariable
은 URL 경로의 일부를 매개변수로 받는다.- 예:
/posts/123
@PathVariable("id") int id
→id = 123
- 예:
- 주요 차이점:
@RequestParam
은 URL의 ?key=value 형태의 데이터를 처리.@PathVariable
은 URL 경로에서 변수 값을 추출.- 두 방식은 함께 사용할 수 있다.
7. ApplicationRunner
- 스프링부트가 앱 시작 시 자동 실행하는 인터페이스.
- 주로 테스트 코드나 초기화 작업에서 사용된다.
@Component
public class MyRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("애플리케이션 실행! 테스트 작업 수행 중...");
}
}