본문 바로가기


프로젝트 하면서/홈페이지 만들기

스프링 부트 3 코드 이해하기

by worldforest 2024. 3. 28.

 

 

@SpringBootApplication 이해하기

스프링 부트의 시작

SpringApplication.run() 메서드 : 애플리케이션 실행

BasicSiteApplication.class : 메인 클래스로 사용할 클래스명

args : 커맨드 라인의 인수 전달

@SpringBootApplication
public class BasicSiteApplication {

    public static void main(String[] args) {

        SpringApplication.run(BasicSiteApplication.class, args);
    }

}

 

ctrl  누르고 @SpringBootApplication 애너테이션 클릭하면 구성을 확인할 수 있다.

 

스프링 부트의 핵심 역할

 

@SpringBootConfiguration

스프링 부트 관련 설정

@Configuration을 상속해서 만듦

 

 

@ComponentScan

사용자가 등록한 빈 읽고 등록

@Component라는 애너테이션 가진 클래스 찾아 빈으로 등록

애너테이션명 설명
@Configuration 설정 파일 등록
@Repository ORM 매핑
@Controller, @RestController 라우터
@Service 비즈니스 로직

 

 

@EnableAutoConfiguration

자동 구성 활성화

META-INF 읽고 정의된 설정 자동으로 구성

spring.factories 파일에 클래스들이 모두 @EnableAutoConfiguration 사용할 때 자동 설정됨

 


 

 

컨트롤러

 

 

package kr.jaen.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/api")
public class BasicController {
    @ResponseBody
    @PostMapping("/data")   
    public Map<String, Object> getData(){
        Map<String, Object> dummy = new HashMap<>();
        dummy.put("result","api data");
        return dummy;
    }
}

// data POST 요청이 오면 메서드 실행

 

@RestController 라우터 역할

라우터 : HTTP 요청과 메서드를 연결하는 장치

 

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Controller;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
    @AliasFor(
        annotation = Controller.class
    )
    String value() default "";
}

 

 

@RestController 애너테이션을 구현하는 RestController.java 파일

@RestController = @Controller + @ResponseBody

 

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
    @AliasFor(
        annotation = Component.class
    )
    String value() default "";
}

 

Controller.java

@Component가 있다.

 

==> @Configuration, @Repository, @Service 애너테이션

모두 @Component 애너테이션을 가지고 있어 빈에 등록될 수 있다.

반응형

댓글