Spring Boot 기반의 프로젝트를 개발하면서 사용하는 기능들을 정리 @ConfigurationProperties 사용하기 ConfigurationProperties는 properties 파일에 설정한 property 값을 java object에 매핑하여 java 코드에서 해당 값을 사용하기 편하게 해 준다. 아래와 같은 properties class를 만든다고 가정한다. @Data @ConfigurationProperties(prefix = "test.sample") public class TestSampleProperties { private String testStr; private int testInt; } 해당 Properties 설정과 매칭 되는 property 값을 properties 파..
vue 공부한 내용을 정리한 게 아니고 공부해야 할 것이나 공부 과정에 대해 기록한 글임 Vue 공부 대부분 한글문서가 있어 공부하기 좋다. vue 한국 사용자 모임 node https://nodejs.org/ko/ vue를 개발하려면 우선 node를 설치해야 함 node의 npm 명령어를 기반으로 vue의 라이브러리를 설치하는데 npm을 직접 쓰기보단 vue-cli를 통해 사용하게 됨 vue https://kr.vuejs.org/v2/guide/ vue를 사용하기 위해 공부해야 하는 가장 기본적인 문서 vue cli https://cli.vuejs.org/ vue로 프로젝트를 만들기 쉽도록 제공되는 라이브러리. npm을 통해 설치함 npm install -g @vue/cli 프로젝트를 만들 때 아래와 ..
암호화는 잘 모르는 내용이라 테스트하면서 기록하여 두서없음 dependency 참조 org.jasypt jasypt 1.9.2 다른 참조 라이브러리로 사용한다면 jasypt-spring-boot-starter 2.1.1이 현재 있긴 한데 해당 pom은 현재 com.melloware.jasypt 1.9.4 라이브러리를 참조하고 있다. com.melloware.jasypt의 경우 StringFixedSaltGenerator를 사용하면 오류가 발생하고 있어 org.jasypt.jasypt를 사용해야 한다 기본 사용 암복호화를 간단하게 해 보면 아래와 같다. public void encryptSimpleTest() { StandardPBEStringEncryptor encryptor = new StandardP..
현재 기준의 도커에서 jenkins를 설치하면서 해당 jenkins container에서 java 11과 docker를 사용하는 방법을 설명한다. 현재 jenkins의 Global Tool Configuration -> install automatically에서 Oracle JDK를 설치하는 것을 9 버전 까지만 지원하고 오라클의 라이선스 정책 변경 때문에 10 이상 버전은 더 이상 지원하지 않는다. https://issues.jenkins-ci.org/browse/JENKINS-54305 수동으로 설치하는 방법도 있긴 한데 그냥 jenkins 이미지 자체를 jdk 11로 실행한 경우 별도 설정 없이 편하게 java 11을 사용할 수 있다. 개인적으로 개발할 때는 굳이 이런저런 설정 없이 편하게 사용하는..
서버 개발자가 로그를 보는건 그냥 서버들어가서 확인하면 된다. 하지만 프론트 개발자와 협업을 하는 경우 서버 로그 확인 요청을 받는 경우가 종종 있다. 이런 경우 웹에서 바로 로그를 확인하면 좋을 것 같아 만들어보았다. Logback의 appender를 사용한 방법이다. logback은 appender로 로그를 처리하는 방식을 관리한다. 여러가지 방식의 appender를 logback이 제공해주지만 기본 제공해주는 appender 중엔 웹 요청으로 응답을 처리하는 appender는 없다. custom appender를 하나 만들어준다. public class BlueskyLogbackAppender extends UnsynchronizedAppenderBase { private BlueskyLogback..
Spring Boot는 java util logging, log4j2, logback에 대한 기본 설정을 제공하고 starter를 사용하면 logback를 default로 설정하여 사용한다. https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/#boot-features-logging dependency 설정 아래와 같이 설정한다. (만약 spring-boot-starter 를 참조 선언하고 있다면 spring-boot-starter-logging은 기본 참조 되어 있다.) org.springframework.boot spring-boot-starter-logging org.codehaus.janino janino 만약 다른..
Spring Cloud Config Server는 프로젝트에서 설정해서 사용하는 properties의 config 변수 값들을 통합 관리할 수 있게 해준다.여러 프로젝트에서 반복 사용하는 공통 변수값을 관리할 수 있어 프로젝트가 많아질 수록 Spring Cloud Config Server의 사용은 유지 보수를 위한 필수 선택이 된다.각 프로젝트별 변수 관리를 application / profile / label 세 가지 개념을 통해 관리를 한다.Spring Cloud Config Server 설정spring cloud는 spring boot를 사용하는 전제 조건에서 사용한다.Maven 설정대략 아래처럼 선언한다. org.springframework.boot spring-boot-starter-parent..
Spring Boot Mongo 설정 MongoClient를 바로 사용하는 방법과 MongoTemplate을 사용해서 Spring Data의 Repository를 사용하는 방법이 있다. 아래 dependency를 추가한다. org.springframework.boot spring-boot-starter-data-mongodb 각자 환경에 맞게 아래 properties를 추가한다. (만약 설정하지 않으면 아래 설정이 default로 사용된다.) spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 아래처럼 configuration 설정을 추가한다. @Configuration @EnableMongoRepositories(basePackages ..
JDK 9나 10에서 프로젝트 실행 시 아래와 같은 오류가 나게 되는 경우가 있다. Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext Java EE 모듈과 CORBA 모듈이 Deprecated 되면서 기본 참조가 되지 않아 발생한 문제였다. 내가 직접 쓰지 않더라도 사용하고 있는 오픈소스 라이브러리가 참조하고 있으면 발생하게 된다. (내 경우 spring cloud의 neflix eureka 라이브러리 쪽이 java.xml.bind 모듈을 참조하고 있었다.) 하지만 Deprecated 명시가 되어 있고 아직 라이브러리가 제거되지 않은 상태여서 --add-modules JVM 옵션만 추가하면 사용이 가능했다. java jar -..
springframework는 profile 설정을 통해 환경마다 다른 설정을 호출할 수 있는 기능을 제공한다. spring application 을 실행 시 실행 변수로 spring.profiles.active를 선언하는 방식이다. $ java -jar -Dspring.profiles.active=p1 application.jar 사용 방법 1 - SpEL로 profile 지정 profile 별 properties 파일을 호출하는 경우 Spring 에서 제공하는 @PropertySource을 아래와 같이 사용한다. @Configuration @PropertySource("classpath:sample-${spring.profiles.active}.properties") public class Confi..