@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 애너테이션을 가지고 있어 빈에 등록될 수 있다.
반응형
'프로젝트 하면서 > 홈페이지 만들기' 카테고리의 다른 글
ORM으로 쉽게 조작하는 데이터베이스 (1) | 2024.03.29 |
---|---|
application.ayml와 application.properties 차이 (0) | 2024.03.29 |
스프링부트 둘러보기 (0) | 2024.03.28 |
mvc 아키텍쳐 기반으로 프로젝트 구조 설계 (0) | 2024.03.28 |
Spring Boot를 사용하여 백엔드를 구축할 때 (0) | 2024.03.28 |
댓글