스프링부트 : 프로젝트 생성과 구조 이해

### 프로젝트 생성과 구조

[스프링 부트 시작하기](https://spring.io/guides/gs/spring-boot/)

1. 소개 : 스프링부트로 간단한 웹 애플리케이션을 만들것이다.
2. 필요한 것: java 17 이상, gradle 7.5 이상 또는 maven 3.5 이상, VSCode
3. VSCode 확장 : java, spring boot
4. 확장의 spring initializer 실행 (dependency는 spring web 만 선택)
    
    [VSCode로 Spring boot 개발하기 (이클립스 100%호환)](https://youtu.be/k684y4wNbgA)
    
5. 폴더 구조 살펴보기
    1. main 메소드가 존재하는 클래스가 가장 최상위 패키지에 위치해야한다.(default 사용 금지)

### 자동설정 이해하기

[스프링 부트 자동 설정](https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-auto-configuration)

- 스프링 부트는 개발자가 추가한 jar 의존성들을 기준으로 애플리케이션을 자동으로 설정하려고 시도한다. @Configuration 클래스중 하나에  @EnableAutoConfiguration 이나 @SpringBootApplication 어노테이션을 추가해야한다.
- 어떤 설정이 적용되었는지 보려면 —debug 옵션을 사용해서 실행하면 된다.
- 자동설정을 제외하려면 아래와 같이 exclude를 사용할 수 있다.

```java
@SpringBootApplication(exclude = { SomethingAutoConfiguration.class })
public class MyApp {

}
```

### Spring Beans 와 의존성 관리

[스프링 부트 의존성 관리](https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-dependency-management)

- Spring Boot는 Spring Framework를 기반으로 하므로 beans(인스턴스)와 의존성주입(dependency injection) 을 사용하는 Spring Framework 기술들을 사용할 수 있다. 의존성 주입과 관련해서 일반적으로 생성자 주입을 권장한다.
- @SpringBootApplication 는 아래 3개의 어노테이션을 포함하고 있다.
    - @EnableAutoCofiguration
    - @ComponentScan
    - @SpringBootConfiguration (@Configuration에서 추가 bean을 등록할 수 있게한다)
- `@Component`, `@Service`, `@Repository`, `@Controller`, and others

### 배포 파일로 실행하기

```bash
$ java -jar target/myapplication-0.0.1-SNAPSHOT.jar
```

댓글

이 블로그의 인기 게시물

Session 대신 JWT를 사용하는 이유

VSCode에서의 VIM 단축키와 키보드 구매 가이드

우분투에서 테스트링크(testlink)와 맨티스(mantis)로 테스팅 서버 구성하기