백엔드/Spring Boot

모던 웹 애플리케이션 개발 - 1. 환경과 툴 설정

두개의 문 2023. 8. 21. 18:15

◉ IDE 특징 

 

 - IntelliJ : 스프링 이니셜라이저 이용(spring.io)해서 프로젝트 생성 . import 

 - STS : 스프링 이니셜라이저 기능 내장되어 있음 

 

 - Apache Maven

  소프트웨어 개발 프로세스를 간소화하는 소프트웨어 프로젝트 관리 툴이며, 개발 프로세스를 통합하는 기능 제공 

 

 


◉ 스프링 이니셜라이저 활용해 maven project 생성 

 

1. 프로젝트 만들기 

 

 • Packaging name = Group명.Artifact명

 • JSP : War 사용 권장 

    타임리프 : Jar 사용 권장 

 

 의존성 추가 - Spring Web / Lombok / Spring Boot Dev Tools 

 

 • Generate - 압축파일 생성 

 압축파일 압축 , app/java 아래로 옮기기 

 

 


2. 프로젝트 실행 - Maven 프로젝트 Import하는 방법 

 • File - Import - Maven 검색 - Existing Maven Projects

 

 

 • Browse - 다운받은 폴더 경로 지정

   이클립스가 프로젝트 폴더의 루트에서 pom.xml 파일을 찾아 Projects 섹션에 표시함 

   pom.xml : 프로젝트의 기본 정보가 들어있는 파일

 

 • Finish - Package Explorer 창에서 확인 가능  

 실행 방식 동일 : Spring Boot App 클릭 

 

 

 


 ▪︎ pom.xml 확인 

  - 따로 선택하지 않아도 테스트 의존성의 경우, 자동으로 포함됨 

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

 

 

▪︎ 스프링 부트의 메인 클래스 

 - 애플리케이션의 실행은 main 메서드로 시작됨 

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {
	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
}

 

 - @SpringBootApplication 어노테이션의 경우, 다음과 같은 여러 어노테이션의 조합 

어노테이션 설명 
@EnableAutoConfiguration 스프링 부트 자동 구성을 활성화함.
스프링부트는 의존성을 기반으로 자동으로 프로젝트를 구성함. 
@ComponentScan 스프링 부트 컴포넌트 검색으로 애플리케이션의 모든 컴포넌트를 찾음.
@Configuration 빈(bean) 정의의 원본으로 쓸 수 있는 클래스를 정의함. 

 


▪︎ 로그와 문제 해결 

 - 스프링 부트 스타터 패키지에는 별도의 구성없이 로깅에 쓸 수 잇는 로그백이 있음 

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {
	// * @Slf4j 어노테이션의 실제 구현의 예시 
	private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);
	
	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
		logger.info("Application started");
	}
}

 - logger.info 메서드 : 로깅 메시지를 다음과 같이 콘솔창에 출력함 ( 프로젝트를 실행한 후 콘솔에서 확인 가능 ) 

 - 기본 로깅 수준 : 별도로 지정하지 않는 이상, INFO