[Spring boot] DI 설정에 관하여
Spring boot 2021. 11. 12. 08:02

이번 글에서 3가지의 DI 설정방식에 대하여 설명하고 각각의 장단점에 정리하할 예정이다. 앞글에서 DI 방식에는 3가지(Construction, setting, field) 방식이 있다는 것을 소개 했다. 그렇다면 그들을 실제 spring project에서 사용되는 방식에 대해 알아보자 XML-based Configuration 이 설정 방식을 사용하려면 applicationContext.xml 파일을 생성 후 원소 내부에 설성 해야 한다. 자세한 내용은 공식문서를 참조하면 좋을 것 같다. //daos.xml 이렇게 설정한 bean은 코드에서 아래와 같이 사용할 수 있다. import org.springframework.beans.factory.getBean // create and configure b..

[Spring boot]Dependency injection(DI)
Spring boot 2021. 11. 11. 20:35

여러개의 object(class)들 사이에는 의존적 관계가 존재한다. 이런 의존적 관계를 가지고 구현하는 것을 tight-coupled programming이라고 한다. Spring에서는 이런 관계를 좀 더 유연한 관계(loosely-coupled programming)으로 변환하는 메가니즘을 dependency injection(DI)라고 한다. 즉 object의 생성과 생명주기 관리를 spring에 넘기므로써 개발자는 로직에만 집중하여 개발 할 수 있게 만드는 것이다. DI 주입 방식은 보통 3가지가 있다. 그것들을 소개하고 장점과 단점에 대해 논의해 보자. Setter-based DI set 함수를 이용하여 의존성을 부여하는 것을 말한다. 이 방식은 runtime에 주입 받는 객체가 변경될 가능성이..

[Kotlin] apply, with, let, also, run 사용
Kotlin 2021. 11. 9. 14:27

언어마다 각자 특색의 lamda 함수가 있다. 이번 글에서는 5개의 lamda 함수가 kotlin에서 어떻게 사용되는지 알아보자 정의 inline fun with(receiver: T, block: T.() -> R): R { return receiver.block() } inline fun T.also(block: (T) -> Unit): T { block(this) return this } inline fun T.apply(block: T.() -> Unit): T { block() return this } inline fun T.let(block: (T) -> R): R { return block(this) } inline fun T.run(block: T.() -> R): R { return bl..

MongoDB 기본적인 사용법
DataBase 2021. 11. 7. 15:27

앞글에서 docker를 이용하여 MongoDB를 올리는 법에 대해 다루었다. 이 글에서는 MongoDB의 몇개의 기본적인 개념과 CRUD를 구현 하는 방법에 대해 다룰 예정이다. 이 글에서는 DataGrip query consol를 이용하여 설명할 예정이다. Collections RDB에는 Table 개념이 있듯이 MongoDB에는 Collection이 있다. Collection은 Documents의 집합이라고 볼수 있다. Create Collection Collection을 만드는 방법은 간단하다. 아래 query가 실행하는 동시에 만약 해당하는 collection이 없으면 해당 collection를 만든다. inserOne과 createIndex 두 명령어만이 새로운 collection을 만들 수 있..

MongoDB 개념 및 docker로 서비스
DataBase 2021. 11. 7. 10:40

NoSQL DB란 Not only SQL라는 뜻으로써 단순히 기존 관계형 DBMS의 특성뿐만 아니라 다른 특성들도 포용한다는 뜻으로 이해 된다. 정형화 되지 않은 데이터를 수용하고 그것들의 확장성을 쉽게 할 수 있는 장점이 있어 요즘 각광을 받는 것 같다. RDBMS와 NoSQL의 차이점을 잘 정리된 글이 있어 공유 한다. Mongo DB NoSQL 진영에서 제일 각광 받고 제일 많이 사용되는 Database이다. Mongo DB는 Document 기반으로 구성되었다. 또한 RDBMS의 ACID 대신 BASE특징을 지원한다. BASE는(Basically Available Sift state Eventually consistent)의 약자로써 기본적인 가용성을 보장한다고 이해하면 될것 같다. Docker로..

[Spring] Kotlin + Spring Boot Controller 에 대하여
Spring boot 2021. 11. 4. 22:00

Spring MVC는 Web application을 개발함에 있어서 기본이라고 보면 된다. 이중에서 Controller에 대한 깊은 이해는 Sprinsg MVC를 이해함에 있어 필수 조건이라고 본다. HttpServlet Spring MVC를 이해함에 있어 제일 중요한 개념이라고 생각된다. HttpServlet은 다양한 데이터를 생성해주는 클라스이므로 JAVA기반의 웹 응용프로그램 개발에 있어서 필수 요소라고 할 수 있다. 보다 자세한HttpServlet 클라스에 대해서는 이글을 참조하시기 바랍니다. 이 클라스에 대해 간단히 요약하면 low level까지 구현해봐야 할듯 하다. HTTP 요청, 응답에 대해 모두 구현해야 하고 Controller에 대한 매핑관계도 모두 구현해야 한다. DispatcherS..

Docker로 PostgreSQL를 서비스 하기
DataBase 2021. 11. 3. 22:12

PostgreSQL은 open-source ORDBMS 이다. 현재 제품 개발 시 MySQL를 많이 사용되지만 PostgreSQL도 그것만의 매력이 있는건 사실이다.이글 통해 두 DB의 장단점을 어느정도 파악 할 수 있을것 같다. Docker&Docker compose 설치 구글에서 검색하여 나온 블로그를 보면 Docker 설치에 관한 내용이 잘 정리되여 있다. 여기서 잘 정리된 블로그를 소개한다. 설치부터 설정 등등이 모두 포함되여 있다(CentOS 기준으로 작성되었음) PostgreSQL 컨테이너 실행 PostgreSQL를 서비스로 올리려면 공식적으로 제공되는 docker image를 사용해야 한다. 아래 사이트로 방문하면 버전 별로 태그를 확인할 수 있다. https://hub.docker.com/..

[Spring] Kotlin + Spring boot 에 JPA 적용
Spring boot 2021. 11. 2. 19:56

앞글 시나리오에 단어를 추가하고 싶고 지속적인 저장을 하고 싶다는 요구사항을 추가하면 어떻게 될지 고민해 보자. 위의 요구사항을 만족시키려면 데이터를 Database에 저장해야 한다. Database와 연동을 ORM 기반으로 구현할 예정이고 ORM 기반으로 구현하려면 오늘의 주인공 JPA가 필수 이다. 이 블로그에서 특별한 설명이 없으면 Database는 PostgreSQL을 기본으로 사용한다. JPA(JAVA Persistence API) 이름 그대로 ORM기술에 대한 JAVA 명세다. JPA는 딱 interface 역할만 하고 그 이후의 처리는 Hibernate 같은 구현체를 사용하여 구현한다. Hibernate JAVA base로 한 ORM 구현체이다. python에 Sqlalchemy가 있듯이 말..