기본적인 기능만 있는 간단한 애플리케이션 구현할거임
증맬 간단할것이다
프론트와 백엔드 서버 분리된 아키텍처로 설계. 브라우저는 백엔드의 REST API를 이용하여 HTTP 요청 보낸다.
로드 밸런서, 오토스케일링 그룹, 도메인 등록, HTTPS 설정
HTML / CSS / React.js
프론트엔드 애플리케이션 개발에 사용한다.
프론트엔드 애플리케이션은 프론트엔드 클라이언트를 반환하는 서버가 있으며, 해당 서버는 React 앱을 반환하는 역할을 수행한다. 이러한 방식으로 프론트와 백을 분리한다.
스프링 부트
백엔드 애플리케이션 개발에 사용한다.
스프링부트로 REST API를 구현하며, API는 프론트엔드 측에서 사용한다. REST API를 구현하고 프론트와 백엔드를 분리하면 추후에 서비스를 확장하는데 용이하다.
AWS
프로덕션 환경 구축에 사용
스프링부트, 그래들, 롬복, 포스트맨 등 백엔드 환경설정
Generate하고, 압축 푼 다음에 인텔리제이 프로젝트 오픈 > build.gradle 파일 선택 > Open as a Project > Trust
초기 프로젝트 구조는 아래와 같다
.
├── HELP.md
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── demo
│ │ └── DemoApplication.java
│ └── resources
│ ├── application.properties
│ ├── static
│ └── templates
└── test
└── java
└── com
└── example
└── demo
└── DemoApplicationTests.java
@ComponentScan
어노테이션이 있는 경우 베이스 패키지와 하위 패키지에서 @Component
가 달린 클래스를 찾는다@Component
가 달린 클래스의 오브젝트 생성한다. 이 때, 해당 오브젝트가 다른 오브젝트에 의존한다면 @Autowire
어노테이션을 통해 자동 의존 주입이 가능하다.@Autowire
에 연결된 변수의 클래스가 @Component
가 달린 클래스라면 스프링이 오브젝트를 생성해서 전달한다.@Bean
어노테이션으로 생성하는 오브젝트라면 @Bean
메서드를 호출하여 생성 후 전달Gradle은 빌드 자동화 툴이다.
빌드 자동화 툴 사용하면 컴파일, 라이브러리 다운로드, 패키징, 테스팅 등 자동화 가능
일일히 라이브러리를 다운받고 설정할 필요없이 코드로 사용할 내용을 적으면 빌드 자동화 툴이 코드를 해석하여 프로젝트 빌드를 위한 작업을 수행한다.
롬복은 어노테이션을 추가하면 컴파일 시 그에 상응하는 코드를 생성해준다.
getter, setter, builder 등 반복 작성할 필요가 없음
롬복 코드 작성을 위해서 annotationProcessor가 필요하다.
dependencies {
annotationProcessor 'org.projectlombok:lombok'
// https://mvnrepository.com/artifact/org.projectlombok/lombok
compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.22'
}
인텔리제이 환경설정 > 컴파일 > Annotation Processer에서 Enable 체크
build.gradle 디펜던시에 추가
// https://mvnrepository.com/artifact/com.google.guava/guava
implementation group: 'com.google.guava', name: 'guava', version: '31.0.1-jre'
REST API 테스트를 위한 도구