plugins {
id 'org.springframework.boot' version '2.3.1.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
group = 'co.kr.joinc'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
크게 이해하기 어려운 부분은 없는 것 같다. 생소한 부분만 따로 찾아봤다.
annotationProcessor : Annotation Processor란 애노테이션에 대한 코드베이스를 검사, 수정 혹은 생성하는데 사용한다. java 컴파일러의 플러그인의 일종이다. 애노테이션을 잘 사용하면 개발자의 코드를 단순화 할 수 있다고 한다.
main 메서드
main 메서드다. 파일이름은 TodoApplication.java 다.
package co.kr.joinc.Todo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TodoApplication {
public static void main(String[] args) {
SpringApplication.run(TodoApplication.class, args);
}
}
@springBootApplication 은 @Configuration, @EnableAutoConfiguration, @ComponentScan 어노테이션을 사용하는 것과 같다. @Configuration 어노테이션은 개발자가 만든 클래스를 Bean 으로 생성 할 때 Singleton으로 한번만 생성되도록 한다. @Component는 Bean을 만들 때 new로 생성하듯이 생성한다. @ComponentScan은 @Component와 @Configuration 어노테이션이 붙은 class를 스캔해서 Bean으로 등록한다.
SpringApplication.run 을 이용해서 TodoApplication 을 실행한다.
최초 컨트롤러를 만들어보자.
controller 패키지를 만들고 여기에 controller를 배치하기로 했다. 첫번째 만들 컨트롤러는 /ping 으로 애플리케이션이 작동중인지 테스트하는 목적으로 사용한다. co.kr.joinc.Todo.controller.ping 패키지를 만들었다. 여기에 PingController를 만들었다.
package co.kr.joinc.Todo.controller.ping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PingController {
@GetMapping("/ping")
public String Ping() {
return "pong";
}
}
2-3년간 Go 언어를 이용해서 API를 개발했떤 경험에 비추어서 spring 사용기를 정리한다. 이건 어디까지나 첫 인상이다.
일단 내 취향에는 맞지 않다. : 숨겨진게 너무 많다. Go는 그냥 설치해서 5개 이내의 키워드로 즉시 애플리케이션을 개발 할 수 있었다. Java는 뭐랄까 IDE 설정하는 것 부터 허들이었다.
드러나지 않은 것들, 암시적인 것들이 있다. Go는 구체적이고 직관적이었다. 이는 달리 말하자면 Go의 경우 개발자가 좀더 귀찮아 질 수 있다는 것을 의미 할 것이다. 다른 자바 개발자들에게 왜 이리 "복잡해 보이느냐" 라고 물어 봤을 때 그들의 대답은 좀 만 더 사용해 보면 엄청 편할 거라고 했다.
어노테이션, Bean, DAO ?, DTO ?, JPA ?, Hibernate ?, XML, 데이터베이스 연동하는 간단한 애플리케이션 하나 짜는데 뭐 이렇게 걸리는게 많은지. 뜯어보면 Go언어로 만드는 것과 구조적으로 차이가 없기는 했다.
이를테면 Go로 만든 프로그램은 그냥 보면 이게 뭐 하는 코드인건지 단박에 알아낼 수 있는데, 자바는 한참을 봐도 이해를 할 수 없었다.
개발환경의 답답함 : go는 vim 으로 개발해도 불편함이 없었는데, 작업 내용이 즉시 반영이 됐다. 빠른 반응 속도라고 해야 하나. 지금 사용하고 있는 인텔리제이는 매우 답답했다. 키 입력이 밀리는 느낌.
테스트 & 배포가 복잡 할 것 같은 불안한 느낌이 든다.
어쨋든 하기로 했으니, 하긴 해야 할 것 같다. 다음 번에 할 일은 아래와 같다.
JSON 데이터를 반환한다.
JPA를 이용해서 H2 데이터베이스를 연동해서 ToDo 데이터를 읽고쓰는 API를 개발한다.
Contents
ToDo List
개발 환경
Spring Initializr
main 메서드
최초 컨트롤러를 만들어보자.
정리
Recent Posts
Archive Posts
Tags