두번째 포스팅을 할지말지 확신이 안섰는데 어느정도 삽질을 통해 알게된점들이 있어서 두번째 포스팅을 한다. spring boot에 적용하기라는 제목치고는 앞선 포스팅에서 spring boot 관련 얘기가 하나도 없어서 이에 관한 내용도 적으려한다. 일단 기본적인 구성은 앞 포스팅에서 다 진행됐다. 간략한 테스트를 진행해보자. jooq API를 사용할때는 DSLContext 객체를 이용하게되는데 이 객체는 spring boot 자동구성에 의해 spring bean으로 등록된다. 편하게 주입받아서 사용하면된다. 우리가 설정해줘야할것은 datasource 관련 설정만 해주면된다. spring: datasource: driver-class-name: org.sqlite.JDBC url: jdbc:sqlite::r..
신규 프로젝트에 DB access를 어떤 프레임워크를 사용할까 고민을 해봤다. 일단 난 MyBatis만 사용해와서 이번에 다른 프레임워크를 사용해보고싶은 마음이 있었다. 후보군은 이렇다. JPA JdbcTemplate MyBatis jooq 아직 실무에서 JPA 경험이 없는터라 JPA를 사용할까도 생각해봤지만 팀 구성원에 JPA에 경험이 있는 사람이 없고, 다른 기술셋들도 생소한걸 사용하기로해서 패러다임 자체를 바꿔야하는 JPA는 좀 무리라고 생각했다. 서비스 구성이 readonly라서 select만 필요한것도 JPA를 욕심내지않는것에 한몫하기도했다. 그러던중 jooq 라는 프레임워크가 있는걸 알게되어 도입을 고민해보게됐다. 각 기술에 대한 결정을 하게된 배경은 이렇다. JPA JPA에 대한 내용은 위에..
현재 개발하고있는 환경에선 이미 CI가 구축되어있어 특별히 내가 작업할일은 없었는데 이번에 신규 프로젝트를 들어가면서 직접 구성을 해야할 일이 생겼다. 이런저런 자료들이 많긴한데 딱 내가 원하던 한글 블로그는 없어서 작성을 해본다. 시작하기전에 말하면 jenkins가 너무 잘해줘서 딱히 내가 할일이 많지 않아 놀랐다. Jenkins plugins jenkins에서 blue ocean 플러그인을 설치한다. 음.. 개인적으로 나는 jenkins 쓰면서 플러그인이 없어서 몇번 삽질을 한경험이 있어서 jenkins 신규로 띄우고 바로 github, blue ocean, pipeline 플러그인을 왠만한건 다 설치했다. ㅡ.ㅡ; 혹시 이 포스팅을 보면서 자신의 Jenkins와 메뉴가 다르다던가 하면 저 3개 관련..
REST API란 무엇인가. 면접갔을때 자주 듣는 질문중 하나다. 뭐 이런저런 대답들을 하겠지만 대부분 이 그 답변안에 이런 내용이 있을것이다. "조회는 GET, 등록은 POST, 수정은 PUT, 삭제는 DELETE를 이용한다." 이중 GET이랑 DELETE는 비교적 명확한데 반해(이름에서부터...) POST랑 PUT은 약간 헷갈리는 부분이 있었다. 그래서 두 메서드가 의미하는 바가 어떤 차이가 있는지 알아봤다. 이것저것 찾아봤는데.. 일단 역시 공식문서가 제일 잘돼있었다. POST post 메서드는 기존에 알고있던대로 등록에 관한 내용이다. http 메세지로 넘어온 엔티티를 새로운 자원으로 등록한다. 새로운 자원으로 등록하지않을 수도있는데 이런 경우엔 200(ok)이나 204(no content) re..
golang의 장점중 하나는 병렬 프로그래밍이 매우 쉽다는 것이다. 활용법을 알아보자. func main() { go goroutine() } func goroutine() { for i := 0; i < 10; i++ { fmt.Print(i) } }goroutine으로 실행할 함수를 정의하고(익명함수로 해도 된다.) 앞에 go키워드만 적어주면 끝이다. 하지만 이 코드를 실행하면 아무것도 출력되지않는걸 볼 수있다. main 함수가 goroutine을 생성하고 바로 끝나버리기때문에 생성된 goroutine이 바로 종료되기때문이다. func main() { go goroutine() time.Sleep(time.Second * 1) } func goroutine() { for i := 0; i < 10; ..
golang에서 커맨드라인 인자를 받는법을 소개하고자한다. os 패키지를 이용하는 방법과 flag 패키지를 이용하는 방법이 있다. 1. os packageos 패키지에 Args 슬라이스를 이용하면 된다. func main() { arguments := os.Args fmt.Println(arguments) } 참고로 디폴트로 항상 애플리케이션 명칭이 첫번째 인자로 넘어가므로 Args는 항상 최소 1임을 유의해야한다. 실제 인자를 보낼때도 0이 아니라 1 인덱스부터 사용해야한다. go run exam1.go option1 option2 형태로 사용하면된다. 2. flag packageos 패키지보다 좀 더 고수준의 방식을 지원해준다. 난 인자를 받을일이 생기면 flag 패키지를 이용한다. func main..
go에는 array와 slice 라는 타입이있다. 이게 좀 묘한데 둘이거의같다. func main() { arr := [3]int{1, 2, 3} slice := []int{1, 2, 3} fmt.Println(arr) fmt.Println(slice) } [3] 이라고 명시적으로 크기를 지정한건 배열, []로 선언한건 슬라이스다. 사용법도 비슷한데 슬라이스는 크기가 변경되는 반면 배열은 불가능하다. 이외에도 전반적으로 슬라이스가 배열의 superset 느낌이라.. 배열은 거의 사용할일이 없을듯하다. 그리고 한가지 치명적(?)인 차이가 슬라이스는 함수의 인자로 전달할때 레퍼런스가 전달되는반면 배열은 복사본이 전달된다는 점이다. func main() { slice := []int{3, 1, 2} arr :..
go에서 기본적으로 제공하는 함수로 panic()과 recover()가 있다. 단순 콘솔 출력해도 fmt 패키지를 임포트해야하는 go인데 저 두 함수는 아무것도 임포트할필요없이 곧바로 제공하고있다. 함수명에서부터 알 수 있듯이 panic()은 go 실행 루틴을 패닉에 빠지게하고(강제종료) recover()는 그걸 복구하는 역할을 한다. 간단한 예제를 살펴보자. func main() { fmt.Println("hello") panic("happen panic!") fmt.Println("goodbye") } panic() 이 실행되면서 실행 루틴이 종료되기때문에 goodbye는 출력되지 않는다.recover() 를 이용해서 복구시켜보자. func main() { fmt.Println("hello") pan..
Go 언어에서 defer 키워드는 해당 키워드를 사용한 함수가 끝날때 호출되게된다. func main() { fmt.Println("a") defer fmt.Println("b") fmt.Println("c") } 즉 이런 코드가 있으면 a, b, c 로 출력이 되는게 아니고 a, c가 출력되고 b는 main이 종료될때 출력되어 a, c, b가 출력되는것이다. file IO 에서 자원을 닫는 구문처럼 항상 마지막에 수행해야하는 코드가 있다면 defer를 이용해서 최상단에서 호출할 수도 있는것이다. file.open();defer file.close(); 처럼말이다. defer가 2번 이상 사용됐다면 이때는 stack에 담기는것처럼 역순으로 실행되게된다. func main() { fmt.Println("a..
기존 운영중인 자바 프로젝트에서 테스트코드를 코틀린으로 작성하고자했다.어떤 것들을 해줘야하는지 찾아봤는데 정말 별거 없다. plugins { id 'org.jetbrains.kotlin.jvm' version '1.3.20' } 이것만 추가해주면 바로 코틀린 클래스를 만들어서 테스트 코드를 작성할 수 있다. class KotlinTest { @Test fun `안녕 코틀린`() { assertThat("hello").isEqualTo("hello") } }
- Total
- Today
- Yesterday
- OOP
- mariadb
- frontend개발환경
- TEST
- spring cloud
- java
- Jackson
- http
- Kotlin
- Design Pattern
- javascript
- MySQL
- JPA
- generics
- backend개발환경
- servlet
- java8
- Spring
- EffectiveJava
- clean code
- DesignPattern
- frontcode
- 정규표현식
- go-core
- toby
- programming
- code
- JavaScript Core
- db
- Git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |