서버 개발자가 로그를 보는건 그냥 서버들어가서 확인하면 된다. 하지만 프론트 개발자와 협업을 하는 경우 서버 로그 확인 요청을 받는 경우가 종종 있다. 이런 경우 웹에서 바로 로그를 확인하면 좋을 것 같아 만들어보았다. 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..
STS 4.0.0 이후 java 파일이나 properties 파일에서 ctrl + space (content assist)가 안되는 경우가 있었다.(워크스페이스와 git 소스를 다 지우고 다시 만들어도 마찬가지였음)Java 에디터에서 안되는 경우이 경우 아래 위치에서 초기화를 한번 해주면 된다.(Java Proposals가 언체크 되어 있어 동작하지 않았었다.)Preferences -> Java -> Editor -> Content Assist -> Advanced 메뉴에서 restore defaults 적용Properties 파일에서 안되는 경우이 경우에 대해서는 Spring 위키 문서에 해결 방법이 설명되어 있다.Boot Properties Editor4.0.0 이전엔 Java Properties F..
공부하면서 적는 내용이라 정확하지 않을 수 있음. mongodb 를 모르는 상태에서 연동을 하는 정도의 수준 reactive를 공부하려고 이 설정을 진행 하였음. reactive가 아닌 경우의 설정은 생략 spring-data-mongodb 설정 boot를 사용하지 않는 경우 아래와 같이 AbstractReactiveMongoConfiguration를 구현하여 설정을 한다. dependency 설정 org.springframework.data spring-data-mongodb java config 설정 @Configuration @EnableReactiveMongoRepositories(basePackages = "net.luversof.blog.repository") public class BlogR..
로컬에서 서버가 잘 동작하는데 빌드 할 때 constructor ... already defined in class 에러가 나는 경우가 있다. 해당 에러는 lombok 1.16.22 에서 발생하는 에러이다. 1.16.22 - constructor ... already defined in class 해결 방법은 lombok 버전을 1.18.0 이상으로 변경하거나 또는 아래와 같이 @Data 와 @NoArgsConstructor 선언 순서를 맞춰주어야 한다. @NoArgsConstructor @Data public class Foo { } @Data를 꽤 많은 부분에서 사용하고 있는 경우가 대다수이므로 순서를 바꾸기 보단 lombok 버전을 변경하는 것을 추천한다. Spring Boot를 사용하고 있는 경우..
JDK의 버전별 변경 사항은 이곳을 참고하세요.특징과 일정은 JEP 2.0 draft에 의해 개정된 JEP 프로세스를 통해 관리된다. JDK 11 은 3년마다 제공되는 Long-term support 버전임 Spec Java SE 11 (18.9) Platform JSR (384) 에 정의된 바와 같이 JSR 384 구현이 목표 실제 Spec은 Final Release Specification 문서를 참고해야함Final Release Specification Feature summary전체 JEP Feature 목록은 OpenJDK의 JDK 11 문서로 확인할 수 있다.Component Feature Security ChaCha20 and Poly1305 Cryptographic Algorithms 암호..