1️⃣ 스프링부트 프로젝트 구조
[ src/main/java 디렉터리 ]
스프링 레거시와 마찬가지로 클래스, 인터페이스 등 java 관련 파일이 위치하는 디렉터리
[ BoardApplication 클래스 ]
자동적으로 생성되는 클래스.
main() 메서드는 SpringApplication.run()을 호출해서 웹 애플리케이션을 실행하는 역할을 한다.
[ src/main/resources 디렉터리 - application.properties 파일 ]
스프링 레거시는 프로젝트가 생성되었을 때 해당 디렉터리에 log4.xml 파일만 생성되었었다. application.properties 은 스프링 부트 프로젝트에서 사용되는 설정 파일이다. 이 파일은 주로 프로젝트의 설정 정보를 담고 있으며, 스프링 부트 애플리케이션의 동작 방식을 조정하는 데 사용된다. 여러 가지 설정 옵션을 지정하여 애플리케이션의 동작을 변경하거나 외부 서비스와의 연동 정보를 설정할 수 있다.
✔ 예시
데이터베이스 설정
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword
서버 포트 설정
server.port=8080
프로파일 설정
propertiesCopy code
spring.profiles.active=dev
로깅 설정
logging.level.root=INFO
스프링 부트 애플리케이션 이름 설정
spring.application.name=myapp
외부 설정 파일 로딩
spring.config.location=classpath:/custom-config.properties
스프링 부트 애플리케이션의 환경별 설정
spring.profiles.active=dev
✔ 프로젝트 적용 ( 나의 경우 )
[ src/test/java 디렉터리 ]
ApplicationTests 클래스가 생성되어 있다. 해당 클래스를 이용해서 개발 단계별로 단위 테스트를 진행하게 되며, 스프링 레거시와는 달리 복잡한 설정 없이 곧바로 테스트가 가능하다.
[ build.gradle ]
프로젝트의 빌드 도구를 gradle로 선택했다. 기존의 스프링은 pom.xml에 dependency를 추가해서 라이브러리르 관리하는 방식의 maven을 이용했었는데, 라이브러리의 버전 문제, 충돌 문제, 종속적인 문제 등 골치 아픈 상황을 여러 번 겪어보았을 거다. 그래서 최근에는 그레이들을 선호하는 추세라고 한다. 단 한 줄의 코드로 라이브러리를 추가할 수 있다.
✔ 프로젝트 적용
// 플러그인 설정
plugins {
id 'java' // java 프로젝트로 설정
id 'org.springframework.boot' version '3.2.0' // 3.2.0 버전의 스프링 부트로 설정
id 'io.spring.dependency-management' version '1.1.4' // 스프링 부트의 의존성 관리 플러그인을 사용
}
// 프로젝트 정보
group = 'com.example'
version = '0.0.1-SNAPSHOT'
// java 소스 및 버전 설정
java {
sourceCompatibility = '17'
}
// 리포지토리 설정
repositories {
mavenCentral()
}
// 의존성 설정
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// implementation 'org.springframework.boot:spring-boot-starter-security'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
implementation group: 'com.mysql', name: 'mysql-connector-j'
implementation 'org.springframework.boot:spring-boot-starter-web'
}
// 테스트 설정
tasks.named('test') {
useJUnitPlatform() // JUnit 5를 사용하여 테스트를 실행
}
2️⃣ STS 파일 구조 오류
에러 메세지
Description:
Field userRepository in com.example.demo.service.UserService required a bean of type 'repository.UserRepository' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'repository.UserRepository' in your configuration.
entity와 repository 그리고 컨트롤러를 만들어 실행했는데 계속 의존성 주입한 것을 찾을 수 없다는 에러 메세지가 나왔다.
원인
sts가 최신 버전이라 뭔가 변경사항이 있어서 오류가 나나? 별 생각을 다 하며 구글링 해봤는데…아주 기본적이고 허무한 원인이었다. 다시 실수하지 않고자 기록해놓는다!
‘파일 구조’를 잘 못 지정한 탓이었다.
demo 패키지 안에 entity와 repository가 있어야 하는데 나는 java파일 바로 아래에 entity와 repository를 만들어서 의존성 주입을 하려는데 파일을 못 찾은 거였다.
해결
3️⃣ 1차 DB 설계
팀프로젝트 때 사용했던 툴인 ERDCloud 를 사용해 1차적으로 DB 설계를 해봤습니다.
왜 1차냐?
감자라...앞으로 더 수정할 일이 있을 것 같거든요 😂
2차적으로 수정을 한 뒤에 자세히 기록하도록 하겠습니다.
'Project 댕린이집' 카테고리의 다른 글
Repository & Service 초기 작성 (0) | 2023.12.22 |
---|---|
Entity 수정 (0) | 2023.12.20 |
Entity 작성 (1) | 2023.12.19 |
Controller 기본 설정 (1) | 2023.12.18 |
개인 프로젝트 시작 : 아이디어 / 와이어 프레임 (2) | 2023.12.05 |