[Spring] Maven Wrapper
Spring boot 2022. 1. 3. 20:23

Maven Wrapper 란 Maven 환경에서 개발 시 Apache maven 프로젝트를 관리하는 주는 툴이다. 이것을 사용하면 매번 복잡한 개발환경을 구성할 필요 없이 어디서든 쉽게 개발할 수 있다. Maven Wrapper 생성 Maven프로젝트 폴더 아래에서 아래 명령을 사용하면 쉽게 Maven Wrapper를 생성 할 수 있다. mvn -N io.takari:maven:0.7.7:wrapper 명령어 #특정 프로파일로 실행 ./mvnw -P[profile명] #Test ./mvnw test # Test skip ./mvnw -Dmaven.test.skip=true #clean ./mvnw clean #package, jar 파일 만듬 ./mvnw package #Install, 현재 폴더에 설치..

[Spring] Spring AOP 개념 및 구현
Spring boot 2021. 11. 15. 05:24

AOP라는 개념을 접하면 먼가 추상적이다. 이 개념은 OOP의 SOLID 원칙을 지키면서 , 원하는 기능을 모두 구현하려면 한계점을 봉착할 때가 많다. 간단한 예를 들면 사용자에 대한 인증이다. 어떠한 서비스를 사용하기 위하여 사용자 권한이 있는지 판단하기 위해서는 권한 체크부분을 서비스에 포함 시켜야 된다. 이렇게 설계하다보면 여기저기 코드가 난립해 있고 관리도 않된다. 또한 OOP 설계 원칙도 지키지 못하게 된다. 위의 문제를 해결하기 위해 Spring에서는 JAVA의 Aspectj를 AOP(Aspect Oriented Programming) 방식으로 도입 했다. Spring에서의 AOP는 프록시 기반의 AspectJ이다. Spring AOP의 몇개 개념 Aspect Advice, PointCut의 ..

[Spring] Kotlin + Spring boot 에 MongoDB을 도입(Spring Data MongoDB, Querydsl)
Spring boot 2021. 11. 14. 11:55

앞의 두글(개념 및 설치, 기본적인 사용법)에서 MongoDB에 대해 간단하게 알아가는 시간이 였다면 이 글에서는 Spring boot에 적용에 있어서 설정과 사용법 그리고 주의해야 할 점들에 대하여 알아보자. 프로젝트 설정 MongoDB를 사용하려면 프로젝트 설정 build.gradle.kts에서 아래와 같이 설정해 줘야 한다. import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("org.springframework.boot") version "2.5.6" id("io.spring.dependency-management") version "1.0.11.RELEASE" kotlin("jvm") version "1.5.31" kotlin..

[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에 주입 받는 객체가 변경될 가능성이..

[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가 있듯이 말..