
젠킨스 버전이 수시로 나오므로 버전 차이가 너무 나지 않게 적당한 수준에서 업데이트 해주는 것이 좋겠다. 젠킨스가 설치되지 않았다면 아래 설치 포스트를 참고하여 설치하시길 바랍니다. [Jenkins] 리눅스에 젠킨스 설치하기. (feat.rockylinux) [Jenkins] 리눅스에 젠킨스 설치하기. (feat.rockylinux) 리눅스에 dnf 명령어로 jenkins를 설치해보고자 한다. 리눅스 젠킨스 설치순서는 아래와 같이 진행하면 무탈하다 Java 11 이상 설치 Jenkins GPG Key 설치 rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-202 jong-bae.tistory.com 젠킨스 관리하다보면 신규버전이 있다고 라벨이 떠..

Spring JPA 프로젝트를 하다보면 DTO나 Entity 를 DB Table 정보에 맞게 작성해야 한다. 작은 규모일 때는 직접 작성해도 무방하지만 규모가 커지거나 Table 컬럼정보가 너무 많을 경우 너무너무나 귀찮다. 그래서 인텔리제이와 groovy script 를 가지고 이를 해결해보고자 한다. 1. 인텔리제이에 Database 연결하기 driver files 를 다운받고 Test Connection 을 성공 시키면 됩니다. 2. POJOs.groovy 스크립트 커스텀하여 실행 Database를 연결하면 Generate POJOs.groovy 스크립트가 생성됩니다. 위치와 접근방법은 아래와 같습니다. 해당 위치에 groovy 스크립트가 존재하고 해당 스크립트를 커스텀해서 실행시키면 스크립트에 맞..

리플렉션(Reflection) 을 사용하면 런타임 시점에 해당 클래스의 내부를 들여다 볼 수 있다. 클래스의 내부를 들여다 볼 수 있는 보안상의 이유로 코드작성을 지양하고는 있지만... 동적인 필드를 처리해야 하는 상황에서는 쉽게 접근 할 수 있는 방법이기도 하다. 사용자단에서 동적 key 를 가지는 Object 를 받아 엔티티 값을 set 해야 하는 상황이 생겨 여러 방법이 떠올랐으나 심플하게 적은코드로 처리 할까 하다가 리플렉션으로 처리하기로 했다. 데이터는 아래와 같이 동적 Object 형태로 만들어져 넘어왔다.

일반적으로 javascript 에서 Object 를 생성하는 방법은 아래와 같다. let obj = new Object(); obj.key = value; let obj = { key : value } let obj = new Object(); obj.name = "park"; let obj = { name : "park" } console.log(obj); // { name:"park" } 보통 위와같이 규정한 key 값을 정해서 Object 를 만들어서 Request 를 Json 으로 보낼 것이다. 근데 개발을 하다보면 key 를 동적으로 해서 넘겨줘야 하는 상황도 있다. 예를 들어 반복으로 a1, a2, a3 ... 이런식으로 보낸다던가 어느 배열에 있는 값들로 key 를 구성한다던가 여러 상황들이..

Optional 클래스를 사용하면 null 처리를 쉽고 가독성 좋게 표현해줄 수 있습니다. 그 중 JPA에서 자주 사용하는 엔티티 ID 값으로 조회하는 findById 는 Optional 로 리턴하는 메소드 중 하나인데요. Optional findById(ID id); 이렇게 id 값에 따른 엔티티를 조회하여 엔티티가 존재하지 않을 경우 대체처리하는 로직을 간결하게 수행할 수 있습니다. 저도 연관된 id 값을 반복 돌리면서 update를 수행하는 코드가 있었는데 생각없이 조건문과 isPresent() 를 이용해서 코드를 작성해놓고 보니 if != null 처리와 뭐가 다른가 싶은 생각이 들었습니다. param.getFileList().forEach(file -> { Optional loadEntityOp..

설정파일에 DB 정보와 Mail 발신인 정보가 그대로 노출될 경우 보안에 취약해질 수 있어 해당 정보를 암호화해서 넣어주거나 설정파일을 외부에 빼서 따로 관리해줘야 한다. Spring에는 Jasypt 라는 라이브러리로 암호화 시켜서 설정파일을 관리할 수 있다. Jasypt 라이브러리 등록 implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5' 암호화 방식 및 키값을 설정하는 빈을 생성. @Configuration public class ApplicationConfig { @Bean(name="jasyptStringEncryptor") public StringEncryptor stringEncryptor() { String ke..