STS나 이클립스에서 프로젝트 생성 후 추가하려면 프로젝트 우클릭 → Spring → Add Starter
spring-boot-starter-* 형태로 관련 라이브러리를 한 번에 가져옴
starter
설명
spring-boot-starter-web
Spring MVC, REST API, 내장 Tomcat 포함
spring-boot-starter-thymeleaf
Thymeleaf 템플릿 엔진
spring-boot-starter-validation
Bean Validation (@NotBlank, @Email 등)
spring-boot-starter-data-jpa
JPA, Hibernate ORM
spring-boot-starter-security
Spring Security 인증/인가
spring-boot-starter-test
JUnit, Mockito 등 테스트 도구
spring-boot-starter-jdbc
JDBC, DataSource 설정
spring-boot-starter-logging
Logback 기본 로깅 (기본 포함)
4. 프로젝트 구조
src
├── main
│ ├── java
│ │ └── com.example.demo
│ │ ├── DemoApplication.java ← 메인 클래스 (@SpringBootApplication)
│ │ ├── ServletInitializer.java ← WAR 배포용 (WAR 선택 시 자동 생성)
│ │ ├── controller ← Controller
│ │ ├── service ← Service
│ │ ├── mapper ← Mapper 인터페이스
│ │ └── dto ← DTO
│ └── resources
│ ├── mapper ← MyBatis XML
│ ├── static ← CSS, JS, 이미지 등 정적 파일
│ ├── templates ← Thymeleaf HTML
│ └── application.properties ← 설정 파일
└── test
└── java ← 테스트 코드
1) DemoApplication.java
항상 자동 생성되는 메인 클래스
@SpringBootApplication 어노테이션으로 아래 3가지를 한 번에 포함
어노테이션
역할
@SpringBootConfiguration
Spring 설정 클래스임을 선언
@EnableAutoConfiguration
자동 설정 활성화
@ComponentScan
하위 패키지의 컴포넌트 자동 스캔
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
2) ServletInitializer.java
WAR 패키징 선택 시에만 자동 생성
외부 Tomcat에 WAR로 배포할 때 필요한 클래스
SpringBootServletInitializer를 상속받아 외부 Tomcat이 Spring Boot 앱을 인식할 수 있게 해줌
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
}
파일
생성 조건
역할
DemoApplication.java
항상 생성
애플리케이션 시작점
ServletInitializer.java
WAR 선택 시 생성
외부 Tomcat 배포용
5. 설정파일 : application.properites
Spring Boot 애플리케이션의 전반적인 설정을 관리하는 파일
서버 포트, DB 연결, 로그, 파일 업로드 등 다양한 환경 설정을 정의
기존 Spring의 root-context.xml과 servlet-context.xml로 나눠서 설정하던 것을 하나로 통합한 구조
src/main/resources 아래에 위치
# 서버 포트 변경
server.port=8090
# DB 연결 (Oracle)
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.username=user
spring.datasource.password=1234
# Thymeleaf 캐시 off (개발 시 템플릿 수정 즉시 반영)
spring.thymeleaf.cache=false
# 파일 업로드 크기 제한
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
# MyBatis mapper 위치
mybatis.mapper-locations=classpath:mapper/**/*.xml
# MyBatis 스네이크케이스 → 카멜케이스 자동 변환
mybatis.configuration.map-underscore-to-camel-case=true
# 로그 레벨
logging.level.com.example=DEBUG