김쥬르에 개발일지
SpringBoot 코드 이해하기 본문
안녕하세요 오늘도 열공합시다~

왼쪽 프로젝트 구성을 보시면 프로젝트 생성과 함께
Name으로 지정했던 SpringbootApplication 클래스가 자동으로 생성이됩니다.
더블클릭하여 파일을 살펴봅시다.
@SpringBootApplication //메인 클래스로 사용하기 위한 어노테이션
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}
모든 프로젝트에는 메인 클래스가 있어야하기에 기본적으로 제공하는 메인 클래스입니다.
@SpringBootApplication 어노테이션을 추가하면 스프링 부트 사용에 필요한 기본 설정을 해줍니다.
@SpringBootApplication이란?
구성을 살펴보며 어떻게 기본 설정을 해주는지 알아보겠습니다.
ctrl을 누른 상태에서 어노테이션을 클릭해봅시다.
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
///생략///
}
세가지 어노테이션을 간단하게 짚고 넘어가겠습니다.
@SpringBootConfiguration
애플리케이션의 구성을 제공하는 어노테이션입니다
해당 어노테이션을 확인하면 @Configuration 과 @indexed 어노테이션이 추가적으로 선언되어 있는걸 확인할수 있습니다.
@Configuration에 자세한 내용은 아래 링크에서 확인 바랍니다
https://blogshine.tistory.com/551
[Spring] @Configuration 이란?
이번 글에서는 @Configuration을 사용하는 이점에 대하여 정리해볼까 한다. 1. @Configuration 이란? " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 Spring에서 Bean을 수동으로 등록하기 위해서는, 설
blogshine.tistory.com
@EnableAutoConfiguration
스프링 부트에서 자동 구성을 활성화하는 어노테이션입니다.
스프링 부트 서버가 실행될 때 부트의 메타 파일을 읽고 정의된 설정들을 자동으로 구성하는 역할을 수행합니다.
@ComponentScan
사용자가 등록한 빈을 읽고 등록하는 어노테이션입니다.
@component라는 어노테이션을 가진 클래스들을 찾아 빈으로 등록하는 역할을 합니다.
@Component?
@Component 어노테이션을 이용하면 Bean Configuration 파일에 Bean을 따로 등록하지 않아도 사용할 수 있다.
빈 등록자체를 빈 클래스 자체에다가 할 수 있다는 의미이다.
@SpringBootAplication은 스프링 부트의 핵심 어노테이션이기에 아래 링크를 통해
꼭 이해하고 넘어가면 좋을거같습니다.
https://cornswrold.tistory.com/314
[Spring Boot] 자동 설정 이해하기 @EnableAutoConfiguration
자동 설정 이해하기 Spring boot main 클래스의 상위에 보면 @SpringBootApplication이라는 어노테이션을 볼 수 있다. @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Ap
cornswrold.tistory.com
Bean이란?
빈을 이해하기 위해선 스프링 컨테이너를 먼저 이해를 해야합니다.스프링은 자체적으로 스프링 컨테이너를 제공합니다.스프링 컨테이너는 빈을 생성하고 관리합니다. 즉 빈이 생성되고 소멸되기까지의 생명주기를 이 스프링 컨테이너가관리하는것이죠 또한 개발자가 @Autowired 같은 어노테이션을 사용해 빈을 주입받을수 있게 DI를 지원합니다.그럼 빈은 도대체 무엇일까요?
빈은 스프링 컨테이너가 생성하고 관리하는 객체입니다.스프링은 빈을 스프링 컨테이너에 등록하기 위해 XML파일 설정,어노테이션 추가 등 여러방법을 제공합니다.다시 말해 빈을 등록하는 방법은 여러가지가 존재합니다.
예를 들어 MyBean이라는 클래스에 @Component 어노테이션을 붙이면 MyBean 클래스가 빈으로 등록됩니다.이후 스프링 컨테이너에서 이 클래스를 관리합니다. 이때 빈의 이름은 클래스 이름의 첫글자를 소문자로 바꿔 관리합니다.
@Autowired?
https://devlog-wjdrbs96.tistory.com/166
[Spring] @Autowired란 무엇인가?
저번 글에서 IoC 컨테이너와 빈(Bean)등록에 대해서 정리해보았다. 다시 정리하자면 의존성 주입과 빈 등록은 다른 것인데 일단 IoC 컨테이너에 빈으로 등록이 되어야 의존성 주입을 할 수 있다. 저
devlog-wjdrbs96.tistory.com
@DI?
https://velog.io/@ashwon1218/DIDependency-injection-%EB%9E%80
DI(Dependency injection) 란?
DI는 Dependency injection의 준말로 '의존성 주입' 이라는 뜻을 가진다. 소프트웨어 공학에서 말하는 의존성 주입은 하나의 객체에 다른 객체의 의존성을 제공하는 기술이라고 표현한다. '의존 관계'
velog.io
이번엔 빈이 어떻게 등록되는지 알아보겠습니다.
springboot 패키지 우클릭 후 [New -> Class] 를 선택하고
TestController.java 파일을 만들어 다음 코드를 입력해봅시다.
@RestController
public class TestController {
@GetMapping("/test")
public String test() {
return "Hello, world!";
}
}
@RestController
라우터 역할을 수행하는 어노테이션입니다
라우터란?
HTTP 요청과 메서드를 연결하는 장치를 말하며 이 어노테이션이 있어야
클라이언트의 요청에 맞는 메서드를 실행할수있습니다.
지금의 경우 TestController를 라우터로 지정해 /test라는 GET요청이 왔을때 test() 메서드를 실행하도록 구성한거입니다.
@RestController 와 @Component는 어노테이션 용어가 다른데 어떻게 같은 @Component 취급을 하는지 알아봅시다.
Ctrl을 누른채로 RestController를 클릭하여 상세코드를 살펴봅시다.
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
@AliasFor(
annotation = Controller.class
)
String value() default "";
}
코드를 보면 @Controller,@ResponseBody 어노테이션이 함께있는걸 볼수 있습니다.
이 코드를 보면 @Controller 어노테이션과 @ResponseBodt 어노테이션이
합쳐진 결과물이 @RestController어노테이션임을 알수있습니다.
이번엔 @Controller 어노테이션의 상세코드를 살펴봅시다.
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
@AliasFor(
annotation = Component.class
)
String value() default "";
}
@Controller 어노테이션 안에 @Component 어노테이션이 있는걸 확인할수 있었습니다.
이를 통해 @Controller 어노테이션이 @ComponentScan을 통해 빈으로 등록되는 이유를 알았습니다.
'Spring boot' 카테고리의 다른 글
| SpringBoot ORM (0) | 2023.12.25 |
|---|---|
| SpringBoot 테스트 코드 (0) | 2023.12.25 |
| Spring Boot 어노테이션 모음 (0) | 2023.12.25 |
| SpringBoot 구조 이해하기 (0) | 2023.12.23 |
| SpringBoot 프로젝트 생성 (1) | 2023.12.21 |