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 commentcomment = "hello"
  • @PathVariable은 URL 경로의 일부를 매개변수로 받는다.
    • 예: /posts/123
    • @PathVariable("id") int idid = 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("애플리케이션 실행! 테스트 작업 수행 중...");
    }
}