스프링 부트란 ? 스프링 프레임워크를 사용 가능한 상태로 만들어주는 도구이다
스프링 프레임워크는 서브 프로젝트로 만들어졌다.
프레임워크 란 ? 애플리케이션의 아키텍처에 해당하는 골격 코드 이다.
메이븐(Maven) / 그레이들(Gradle) : 라이브러리 관리와 빌드 자동화 도구이다.
스프링 부트 프로젝트의 구조
1. src/main/java : 일반적인 자바 소스 등록
2. src/main/resources : 자바 소스가 아닌 xml 이나 프로퍼티 파일을 등록 한다.
- 스프링 부트의 경우 기존 메이븐과 조금 다르다 펼칠 경우 xml 파일은 없고 웹 어플리케이션과 관련된 static 과 templates 폴더가 존재한다.
- static : html 과 같은 정적인 웹 리소스이다.
- templates : 타임리프 같은 템플릿 기반의 웹 리소스가 저장된다.
3. application.properties : 이 파일에는 프로젝트 전체에서 사용할 프로퍼티 정보를 저장한다.
- src/test/java : Junit 기반의 테스트 케이스를 작성한다.
pom.xml
1. 메이븐을 이용해서 만든 스프링 부트 프로젝트 전반의 환경을 설정하는 파일이다.
2. 가장 중요한 설정은 dependencies 설정이다. ( 의존 관계 )
3. 처음 프로젝트 생성 시 두 개의 설정 존재한다.
-spring-boot-starter-web : 웹 애플리케이션 개발에 필요한 스프링 MVC 관련 라이브러리
-spring-boot-starter-test: JUnit 을 비롯한 테스트 관련 라이브러리 이다.
추가 하고 싶은 Dependencies 를 선택해주면 된다.
(초기세팅이 간편해졌다)
프로젝트명 + application.java
1. 스프링 부트로 만든 애플리케이션은 일단 자바 애플리케이션으로도 웹 애플리케이션으로도 실행이 가능하다.
2. 기본적으로 제공되는 메인 클래스를 현재 상태로 실행하면 웹 애플리케이션으로 실행이된다.
- 내장 톰켓이 구동되고 브라우저에서 전송한 요청 처리가 가능하다
- 스프링 부트의 버전이 올라가면 내장 톰켓 버전도 자동으로 올라간다.
- 코드를 약간 수정하여 일반 자바 애플리케이션으로 실행하면 내장 톰켓 구동안한다.
@SpringBootApplication
스프링 부트로 만든 애플리케이션의 시작 클래스를 의미한다.
유일하게 구현된 main() 메소드는 SpringApplication의 run() 메소드를 정적 메소드 호출 방식으로 호출한다.
SpringApplication.setWebApplicationType 으로 애플리케이션 타입 설정이 가능하다.
1) 설정 가능한 애플리케이션 타입 세가지가 있다.
- NONE : 웹으로 동작하지 않도록 설정한다.
- SERVLET : 기존의 스프링을 MVC 기반으로 웹 어플리케이션을 구동하겠다는 설정이다.
- REACTIVE : 스프링 5.0에서 추가된 비동기 처리와 논블로킹 입출력(non-blocking I/0) 을 지원하는 웹 플럭스를 적용할 때 사용한다.
4. 외부 프로퍼티 파일 사용하기
application.properties 파일은 전체 프로젝트의 프로퍼티 정보를 관리하는 설정 파일이다.
자바 소스보다 application.properties 파일의 설정이 우선순위가 가장 높다
- static : html 과 같은 정적인 웹 리소스이다.
- templates : 타임리프 같은 템플릿 기반의 웹 리소스가 저장된다. ( 스프링부트에서는 jsp를 안쓰고 html 를 쓴다 )
html에서는 jstl를 사용할수 없으므로 타임리프를 사용하게 된다.
애플리케이션 타입 설정 : spring.main.web-application-type=none
톰켓 서버 포트 변경하기 : server.port=8080
톰켓 서버를 구동하여 웹 어플리케이션으로 실행하려면 web-application-type을 다시 servlet으로 변경한다
만약 server.port=0 으로 설정 시 현재 사용되지 않는 포트 번호로 랜덤 할당 한다.
application.properties 에 설정한 프로퍼티 정보들은 실제 해당 properties 객체의 setter 메소드가 호출되어
의존성이 주입된다.
- 자동 컴포넌트 스캔
스프링 문법에서 xml설정 파일에 누락되면 컨테이너가 컨트롤러를 빈으로 등록하지 않는다
@SpringBootApplication 가 작성되면 @ComponetScan 이 포함되어있기때문에 자동으로 등록되게 된다.
다른 패키지에 있는 컨트롤러 클래스 까지 스캔 대상에 포함시키려면 메인 클래스에 @ComponentScan 를 추가하고 스캔 하고자 하는 패키지를 직접 지정해야 한다.
- 롬복 라이브러리
모든 vo클래스와 앞으로 JPA(Java Persistence API) 에서 사용할 도메인 클래스에 getter,setter,toString을 반복적으로 작성하는 것은 귀찮은 일이다. 이런 문제를 간단하게 해결하는 것이 바로 롬복이다. 롬복은 자동적으로 자바 파일 컴파일 시 생성자 , getter , setter , toString 와 같은 코드들을 추가해준다.
롬복에서 제공하는 어노테이션 목록
어노테이션 | 기능 |
@Getter | Getter 메소드 생성 |
@Setter | Setter 메소드 생성 |
@RequestArgsConstructor | 모든 멤버변수의 값을 문자열로 연결하여 리턴하는 toString메소드 생성 |
@ToString | 모든 멤버변수의 값을 문자여롤 연결하여 리턴하는 toString 메소드 생성 |
@EqualsAndHashCode | equals() hashCode() 메소드 생성 |
@Data | @Getter , @Setter @RequiredArgsConstructor @ToString , @EqualsAndHashCode 모두 포함하게 된다. |
'BACKEND > 스프링 Spring Boot' 카테고리의 다른 글
SpringBoot REST API 상품 조회 , 삭제 , 수정 , 등록 (0) | 2024.01.08 |
---|---|
Spring Boot 로 만드는 Restful Api 간단한 예제 (0) | 2024.01.04 |
타임리프 입출력 (1) | 2022.03.30 |
211227 (0) | 2021.12.27 |
211226 [일요일] 초조해지지말자 (시작,매일꾸준히 올리겠습니다.) (10) | 2021.12.26 |