All
15 posts
SpringBoot 에 TypeScript 적용하기

구현환경 종류 버전 OS M1 Mac(Monterey 12.4) IDE Intellij(2022.1.2) Java jdk17 (temurin) Spring 2.7.5 Gradle 7.6.1 1. Spring Boot Project 에 TypeScript 설치하기 2. TypeScript 설정 3. 설치 및 설정 확인

typescript
(기초)Kotlin StringBoot 에서 TailwindCSS 설정하기

들어가면서 npm 초보에게는 너무 어려워 Tailwindcss 공식 문서와 검색 자료들은 npm 이 아직 서투른 제가 bootstrap 에서 벗어나 tailwindcss 로 이동하기에는 자료도 적고 자세하지 않아서 이해하기 어려웠습니다. 대부분의 문서에서는 기본적인 지식을 전제로 글이 작성되었고, 반갑게 찾아본 자료들을 보며 표정이 굳어졌습니다… 웃다_정색하는_노홍철 그래서 많이 삽질했고 드디어 성공했는데, 혹시 다른 사람들에게 도움이 될까 싶어 간단히 글로 정리해봅니다. 해당 글에서는 npm 이 무엇인지, TailwindCSS 가 무엇인지에 대해서는 설명하지 않겠습니다. 목차 이번 글은 Springboot project 에서 tailwindcss 를 적용하는 내용을 담고 있습니다. 순서는 다음과 같습니다. Springboot project 에 NPM 설정 Kotlin Gradle 에서 설정 tailwindcss 추가 및 설정 npm 과 TailwindCSS 가 무엇인지에 대해서는…

August 15, 2023
spring
Kotlin StringBoot 에서 QueryDSL 설정하기

Kotlin SpringBoot 환경에서 QueryDSL 을 설정고자 했으나 제대로 성공한 케이스가 없어 진땀 뺀 기억이 있습니다. 해당 포스트에서는 제가 적용 한 kotlin spring boot 에서 QueryDSL 을 공유하고자 하며 이미 Spring Data JPA 환경이 구축된 상태를 전제로 합니다. 추가로 해당 포스트는 아직 다듬어지지 않은 상태이므로 추후 피드백에 따라 수정될 여지가 있습니다. :) 구현 환경 종류 버전 OS M1 Mac(Monterey 12.4) IDE Intellij(2022.1.2) Java jdk17 (temurin) Spring 2.7.5 Gradle 7.6.1 정확한 이유는 파악 중 이지만 kotlin plugin 버전을 높일 경우 제대로 적용되지 않는 문제가 있습니다. 1.6.10 에서는 문제 없이 동작하는 것을 확인했으므로 본인 환경에 따라 적용하면 될 것 같습니다. 환경 설정 build.gradle.kts 설정 추가 해당 파일의 전문은 …

May 24, 2023
spring
여러 종류의 OpenJDK 중에서 선택하기

별 다른 이유없이 똑같은 JDK 를 사용하고 있는 자 보아라. 본인이 관심이 없다면 처음에 접한 JDK 만을 사용하게 됩니다. 저도 사이드 프로젝트를 새로 시작하게되면서 어떤 JDK 를 사용해야하나 고민하던 중 JDK 의 버전과 종류를 정리 해봤는데, 저 처럼 사용하고 있는 JDK 가 어떤 장점이 있는지 모른다면 이번 기회에 어떤 JDK 가 있는지, 어떤 기준에 따라 선택하는게 좋은지 알아보고자 합니다. 1. Java 버전 선택하기 8 미만의 버전은 메리트가 없다 8 미만의 java 버전은 22년도 기준 지원이 모두 끝났을 뿐 아니라 해당 버전을 지원하는 라이브러리의 보안 취약점을 해결하기가 어렵습니다. 여러 이슈가 해결된 라이브러리와 프레임워크는 1.8(8) 버전 이상을 지원하는 경우가 많기 때문에 특별한 이유가 없다면 최소 8, 혹은 그 이상의 버전을 선택할 수 있도록 합니다. LTS 가 적힌 버전 중에서 고려할 것 지원 기간은 아주 중요하기 때문에 Long Term Suppo…

September 20, 2022
java
[Gradle] Gradle Project 에 JUnit5 + AssertThat 설정

개요 Gradle Project 에 Junit5 + AssertThat 을 설정해보도록 하겠습니다. 맥락을 이해한다면 Spring 프레임워크를 사용하거나 Maven Project 에도 적용할 수 있으니 참고 바랍니다. 종류 환경 OS M1 Mac(Monterey 12.4) IDE Intellij(2022.1.2) Java jdk17 (temurin) Gradle Project 에 JUnit5 라이브러리 추가 Gradle Junit5 Use Guide 를 확인하여 손쉽게 JUnit5 를 적용할 수 있습니다. 직접적인 관련은 없지만 assertThat 을 사용하기 위해서 assertj 종속성도 같이 추가했습니다. Gradle Project build.gradle 수정 Gradle Spring 환경에서 junit5 라이브러리 추가 Gradle 과 동일하게 설정해도 무관하지만 Spring boot 에는 spring-boot-starter-test 가 존재하기 때문에 종속성을 다르게 가져갈…

June 21, 2022
spring
java
[Java] Gradle Project lombok 설정

개요 Gradle Proejct 에 Lombok 을 추가하는 가장 정석적이고 깔끔한 방법을 소개하고자 합니다. 추가적으로 Intellij IDE 에서 해야되는 간단한 설정도 확인할 수 있습니다. 종류 환경 OS M1 Mac(Monterey 12.4) IDE Intellij(2022.1.2) Java jdk17 (temurin) Gradle Project 에 Lombok 적용하기 주로 라이브러리에 추가하는 통상적인 방법과 달리 Gralde Project는 라이브러리를 추가하지 않아도 plugin 으로 간단히 Lombok을 적용할 수 있습니다. lombok plugins guide 에 접속하여 버전과 적용 방법을 확인할 수 있습니다. bulid.gradle 에 lombok plugin 추가 Dependences 에 의존성과 annotation 설정을 해야하는 일반 gradle 환경과 달리 간단하게 적용할 수 있는 것이 가장 큰 장점입니다. IntelliJ 에 Lombok 설정하기 플러…

June 20, 2022
java
spring
[Java] 파일 구분자 File.separator 대신 Path 사용하기

개발을 하다보면 경로를 지정해 파일을 가져오거나 저장을 하는 경우가 있을 수 있습니다. 이번 포스트에서는 java 에서 절대 경로를 지정하는 방법에 대해 알아보고자 합니다. 잘못된 경로 지정 방법 하드 코딩으로 절대경로 지정하기 가장 직관적이고 간결한 방법이지만 경로 사이에 있는 구분자는 운영체제마다 조금씩 다르기 때문에 적절하지 않은 방식입니다. 개선된 방법 File.separator 로 파일 구분자 삽입하기 직접 실행한다면 각 운영체제에 맞춰 파일 구분자가 다르게 삽입되는 것을 확인할 수 있습니다. 다만 하드코딩보다 훨씬 코드가 길어서 경로가 길면 코드를 치기가 힘들고 가독성이 떨어진다는 단점이 있습니다. Path.get() 으로 파일 구분자 삽입하기 File.separator 를 사용했을 때 처럼 운영체제마다 파일 구분자가 다르게 삽입되는 것을 확인할 수 있습니다. 그럼에도 코드는 더 짧고 가독성도 좋기 때문에 기존 방식들보다 더 추천합니다. 마무리 Pahts 는 경로를 지…

January 30, 2022
java
[Gradle] Gradle project 시작하기

개요 Mac 환경에서 Gradle Proejct 를 생성하는 방법에 대해서 알아보겠습니다. 종류 환경 OS M1 Mac(Monterey 12.4) IDE Intellij(2022.1.2) Java jdk17 (temurin) Gralde 프로젝트 시작하기 Gradle Install Hombrew Gradle Installation Documents Gradle 공식 문서에 따라 설치하도록 합니다. Hombrew 로 설치하는 것 역시 권장 방법이므로 터미널에 다음과 같이 입력 후 실행합니다. 1. 프로젝트 시작 폴더 생성 Gradle 프로젝트를 생성하기 전에 해당 프로젝트를 시작할 폴더를 새로 만듭니다. 폴더 명과 별개로 프로젝트 이름은 따로 지정할 수도 있습니다. 방법은 아래 말씀드리겠습니다. 2. Gradle 프로젝트 생성 폴더로 이동한 후에 아래 명령어를 입력합니다. 입력 후에는 몇 가지 옵션을 선택하여 프로젝트를 새로 생성합니다. 생성하고자 하는 프로젝트의 타입을 선택합니다…

January 28, 2022
java
[springboot_start] thymeleaf layout 설정(작성 중)

개요 이번에는 thymeleaf 를 프로젝트에 적용하는 방법과 thymeleaf layout 을 설정하는 방법에 대해서 알아보겠습니다. 종류 환경 OS M1 Mac(Monterey 12.4) IDE Intellij(2022.1.2) Java jdk17 (temurin) Thymeleaf 환경 설정 thymeleaf 의존성 추가 build.gradle 파일에 thymleaf 의존성을 추가합니다. thymeleaf 설정 application.yml 파일에 thymelaf 관련 항목을 설정합니다. 각 항목 해설 옵션 해설 prefix: classpath:templates/ thymeleaf 최상위 디렉토리를 지정합니다. Controller 에서 /resource/templates/index.html 을 return 하고 싶은 경우 return index 라고 작성하면 됩니다. suffix: .html .html 으로 설정하여 파일 확장자를 생략할 수 있습니다. cache: true 캐시…

January 09, 2022
spring
[springboot] Spring Boot project 시작하기, log4j2 + yml

이번 포스팅에서는 Spring Boot Project 에 log4j2 를 설정해보겠습니다. 프로젝트를 생성하는 방법은 이전 포스트를 참고해주시길 바랍니다. 구현 환경 종류 버전 OS M1 Mac(Monterey 12.4) IDE Intellij(2022.1.2) Java jdk17 (temurin) Spring 2.7.5 Gradle 7.6.1 라이브러리 가져오기 (선택)기존 logging 라이브러리 제외하기 log4j2 라이브러리를 가져오기 전, 스프링에서 제공하는 기본 라이브러리는 사용하지 않을 예정이므로 제외합니다. 선택 사항이지만 사용하지 않은 라이브러리를 굳이 남겨둘 이유는 없으니 제외시키는걸 추천드립니다. log4j2 라이브러리 가져오기 다음으로는 log4j2와 slf4j를 위한 라이브러리를 가져오겠습니다. slf4j는 slf4j-impl에 포함되어있으므로 따로 가져오진 않겠습니다. 버전은 작성일 기준 2.17.1 이상을 가져오시길 바랍니다. log4j 취약점 논란이 …

January 09, 2022
spring
[springboot] Spring Boot project 시작하기 1/?

개요 신규 Spring Project 를 spring initializr 사이트를 이용하여 생성하고 Intellij IDE 에 import 하는 방법에 대해서 알아보겠습니다. 종류 환경 OS M1 Mac(Monterey 12.4) IDE Intellij(2022.1.2) Java jdk17 (temurin) 프로젝트 생성 spring initializr을 이용한 프로젝트 생성 새로운 springboot project를 시작하는 방법은 여러가지가 있지만 이번에는 spring inializr에 접속하여 간단하게 생성해보도록 하겠습니다. Spring initializr 사이트에 접속합니다. Project 환경 선택 종류 환경 project Gradle Prject language java spring boot 2.6.2 packaging jar java 17 Project Metadata는 각 프로젝트 성격에 맞춰서 작성하면 됩니다. Dependencies는 우측 Add Dependen…

January 09, 2022
spring
Springboot 내장 WAS를 undertow로 변경하기

들어가기에 앞서 Undertow 란? Undertow 란 bloking/non-blo 작업 모두에 사용할 수 있도록 설계된 웹 서버입니다. Tomcat 대신 Undertow 로 바꿔야 하는 이유 아주 오랜시간동안 Tomcat 이 쓰여 익숙하지만, 단지 그 이유 하나만으로 Tocmat 을 써야하는 것은 나쁘다고 생각합니다. 여러 벤치마크 결과에 따르면 Undertow 는 Tomcat 보다 더 빠르고 가볍고 안정적이고 더 많은 부하를 처리할 수 있습니다. 관련 커뮤니티도 잘 갖춰져 있기 때문에 제약이 크지 않다면 Tomcat 보다는 Undertow 를 사용하는 것이 더 합리적이라고 생각합니다. 적용 환경 항목 버전 build tool gradle 7.3.2 application config application.yml 내장 WAS 를 Undertow 로 변경하기 기존 WAS 인 Tomcat 을 제외 Tomcat은 사용하지 않을 예정이므로 제외합니다. 제외하지 않을 경우 에러가 발생할 …

January 09, 2022
spring
[mybatis] java.lang.NumberformatException Error 해결

들어가기에 앞서 Mybatis 환경에서 아래와 같은 에러가 발생하는 2가지 경우와 해결방법에 대해서 알아보겠습니다. 원인 진단 및 해결 데이터 타입 에러 가장 기본적으로 확인해야될 문제로, java 변수와 쿼리 결과의 자료형이 다른지 확인해봅니다. String 으로 받아야할 결과를 int 나 long 같은 정수형 변수로 받는 것은 아닌지 확인해보고 수정할 수 있도록 합니다. 자료형에 문제가 없다면 다음 문제를 의심해보도록 합니다. 동적 쿼리 에러 아무리 봐도 자료형의 문제가 없다면 SQL 동적 쿼리에서 "" 와 ” 를 구분하여 사용하였는지 확인해야합니다. 다음과 같이 작성했을 경우 아래와 같이 변경할 수 있도록 합니다. 해결 방법은 몇 가지 존재하지만 가장 깔끔한 방법은 위와 같이 작은따옴표(”)를 먼저 사용한 뒤 큰따옴표("")를 사용해야 합니다. 해당 오류가 발생하는 이유를 간략히 설명하자면 OGNL(Object Graph Navigation Language) 표현식 때문입니다…

January 08, 2022
spring
mybatis
[Sourcetree] Mac KeyChain Error 해결 방법

Mac 환경에서 Sourcetree 를 사용하다가 키체인 암호를 입력하라는 팝업이 떠서 당황한 경험이 있다면 다음과 같은 방법으로 해결할 수 있습니다. 해결 방법 터미널 실행 해당 명령어 입력 git 명령어 재시도 password 입력 창이 뜨면 github Personal access tokens 입력

January 07, 2022
Sourcetree
[Java] String 문자열 뒤집기

문자열을 거꾸로 뒤집는 방법은 여러 가지가 있지만 StringBuffer, reverse() 를 사용하는게 제일 간결하지 않을까싶습니다. StringBuffer, reverse() 예제 Code Result 설명 StringBuffer StringBuffer 클래스의 인스턴스는 String 클래스의 인스턴스와 다르게 그 값을 변경하거나 추가할 수 있는 가변 클래스입니다. new StringBuffer()로 새롭게 선언할 수 있습니다. StringBuffer.reverse() reverse() 메소드를 사용하면 해당 객체를 뒤집을 수 있습니다. reverse()를 사용하면 예제와 같이 sb와 reverseString의 문자열이 뒤집혀 있는 것을 확인할 수 있습니다. StringBuffer는 String를 사용하는 것보다 변경이 쉽다는 점에서 메모리 공간과 속도 측면에서 이득입니다. 다만 만능은 아니므로 적절한 상황에서 필요에 따라 사용하는 것이 좋아보입니다. StringBuffer,…

January 01, 2022
java