Programming/Java

Programming/Java

[Java] AES 256 암복호화 유틸클래스

일을 하다 보니 AES 256 알고리즘으로 암복호화할 일이 생겨서 간단하게 유틸 클래스를 만들어보았다. 256 암호화라서 32자의 암호화 키를 사용해야하며, iv 파라미터를 이용한다. iv 파라미터 값은 암호화 키 16자를 활용한다. import lombok.extern.slf4j.Slf4j; import javax.crypto.*; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidK..

Programming/Java

[Java] 사용하는 라이브러리의 라이선스 내용 출력하기

프로젝트를 진행할 때 우리는 여러 라이브러리를 여기저기서 끌여다가 사용하게 됩니다. 열심히 만든 개발 결과물이 개발 단계에서 사용된 외부 라이브러리로 인해 낭패 보지 않도록 프로젝트 내에서 사용한 각 라이브러리에 대한 라이선스 정보를 파악할 필요성이 있습니다. 각 라이브러리를 하나씩 찾아서 수기로 작성하기엔 시간도 아깝고 눈도 아픕니다. 이를 자동화하여 추출할 수 있는 방법을 소개해드리겠습니다. Spring Boot와 Gradle 기반의 프로젝트의 예시 build.gradle 에 다음과 같이 라이브러리 추가 (Gradle ≥ 5.*) plugins { .... // 여러 플러그인들... id "com.github.jk1.dependency-license-report" version "1.13" } 이후 ..

Programming/Java

[Intellij IDEA Plugin, Java] SonarLint 코드 퀄리티를 높여보자!

현재 내가 다니고 있는 회사에는 서버, 웹 클라이언트, 안드로이드등 여러 개발 직군들 별로 서브 챕터라는 이름으로 논리적인 팀이 구성되어있다. 현재 서버 서브 챕터 조직은 6명의 서버 개발자분들이 소속되어있으며, 우연치 않게 내가 서버 서브 챕터의 리더를 맡게 되었다. 나는 서버 서브 챕터원들이 협업하는데 있어서 문제가 없도록 프로젝트 설계 가이드라인을 작성하고, 사용할 개발 스택 선정하고 이를 각 챕터원들에게 공유했다. 최근 서버 개발자분들이 모두 투입되는 통합 프로젝트를 진행하고 있는데, 각 담당 서버별로 코드 리뷰와 API 설계를 검토하면서 컨벤션이 필요하다는 점을 느끼게 되었다. 프로젝트 설계에 대한 가이드라인은 제공하였기 때문에 구조를 파악하는데 힘이 들진 않았지만, 코드의 네이밍 규칙이 정해져..

Programming/Java

[Java8] Stream API 공부 정리 (1)

Stream Class Colleciton의 요소를 하나씩 참조해서 람다식으로 처리할 수 있는 클래스 java 7 이전 코드 예시 1 List data = Arrays.asList("아메리카노","카페라떼","콜드브루","바닐라 라떼"); iterator iterator = data.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } 예시 2 List data = Arrays.asList("아메리카노","카페라떼","콜드브루","바닐라 라떼"); for(String name: data){ System.out.println(name); } java 8 이후 코드 List data = Arrays.asList("아메리카노..

Programming/Java

[JPA , Hibernate] Add Prefixed Table Name

JPA와 Hibernate를 사용하고 있는 개발자라면 hibernate ddl option에 의해 엔티티 클래스가 데이터베이스에 테이블로 자동으로 생성되는 것을 알고 있을 것이다. 이때 테이블명은 여러 전략에 의해 정해지는데 기본적으로는 엔티티 클래스명을 따르고 소문자에 언더바를 넣는 전략을 선택한다. @Entity public class UserHistory{ @Id @GenerateValue(strategy = GenerationType.IDENTITY) private Long id; // ..... 기타 등등 } 위와 같이 엔티티 클래스를 작성했을 때 특별한 설정이 없었다면, Hibernate는 다음과 같은 이름으로 테이블을 생성한다. CREATE TABLE user_history ( id BIGI..

Programming/Java

[Gradle] Gradle 에서 Launch4j Plugin 사용해서 exe 실행파일 만들기

최근 회사에서 개발한 서버 프로그램을 온 프로미스 형태로 납품하는 업무가 자주 생겼고, 기존에 jar파일로 프로그램을 빌드하고, launch4j 프로그램을 통해 직접 한 땀 한 땀 설정해서 exe 파일을 만들었던 것이 너무 불편하고 빡침이 몰려와서(갠 적으로 노가다를 싫어함..) 자동화할 방법이 없나하다가 방법을 찾아서 포스트를 올려본다. 정말 간단한 해결방법이다. 사실 예전부터 있었던 방법인데 내가 아마 늦게 알게된것 같다. 보통 Java 프로젝트를 진행하면 라이브러리 의존성 관리 및 빌드 도구로 maven 또는 gradle을 사용할 것이다. launch4j는 maven이나 gradle에서 모두 적용이 가능하다. 나는 gradle을 사용하고 있기 때문에 gradle을 이용한 방법을 소개한다. 먼저 la..

Programming/Java

[Intellij(인텔리제이)] Intellij 내장 Http Client로 API 테스트 해보기

* 이 글은 Intellij를 사용하고 있는 개발자분들을 대상으로 합니다. 서버 개발을 하다 보면, 외부 API 또는 자신이 개발하고 있는 API 서버를 대상으로 테스트해봐야 하는 경우가 많이 발생합니다. 이러한 상황에서 테스트를 하기 위해 개발자들은 Http Client 프로그램을 사용하는데, Http Client들 중에 대표적인 프로그램으로 PostMan (포스트맨)을 많이 사용합니다. 테스트를 할때, IDE에서 작업을 하다가 화면을 이동해서 포스트맨을 켜서 테스트를 해보고, 다시 IDE로 돌아와 API 수정을 하고 다시 포스트맨으로 이동해서 테스트를 하는 등 불필요한 화면 이동 작업들이 많이 발생하게 됩니다. 이러한 불필요한 이동 작업을 줄일 수 있는 방법 중에 하나가 Intellij에 내장되어 있..

Programming/Java

Gradle 5.0 버전대에서 Querydsl 사용하기

최근 Spring Boot, Spring Boot Data Jpa, Hibernate를 사용하면서 Spring Boot Data JPA 프로젝트에서 Querydsl을 적용하는 방법에 대하여 알려드리겠습니다. 먼저 Querydsl 관련 플러그인을 다음과 같이 추가해줍니다. 그다음, querydsl 라이브러리를 dependencies에 다음과 같이 추가해줍니다. 이후, gradle에서 querydsl을 통해 Qclass를 생성하기 위하여 QClass가 생성될 디렉토리의 위치와 관련 설정들을 작성하는 Task를 다음과 같이 추가해줍니다. Java 플러그인에는 Source Set이라는 개념이 들어가 있으며, 이는 함께 컴파일과 실행되는 소스 파일들의 그룹들을 뜻합니다. 다음과 같이 자바 코드와 QClass가 같..

JohnMark
'Programming/Java' 카테고리의 글 목록 (2 Page)