본문 바로가기

Java/Spring3

SpringBoot에 Let's Encrypt 적용 Spring Boot에 Let's Encrypt 적용하기 ##Let's Encrypt? https://letsencrypt.org/ 사이트에 HTTPS를 적용하기 위해서는 Certificate Authority에서 발급한 인증서가 필요하다. 일반적으로는 CA에서 돈을 지불하고 인증서글 구입해야 하지만, HTTPS를 보급화 하기 위한 몇몇 조직들의 후원으로 무료 CA인 Let's Encrypt가 탄생했다. 아쉬운 점은 인증서의 기간이 최대 90일로 비교적 짧은 편이다. 하지만 Certbot을 이용해 자동 갱신이 가능하다. 설치하기 https://letsencrypt.org/getting-started/ 인증서를 설치하기 위해서 크게 두 가지 방법이 있는데, 첫번째는 shell을 이용, 이용하지 않는 방법이.. 2020. 2. 23.
완전히 실행 가능한 Spring Boot 배포 Spring Boot를 $ java -jar 명령어를 이용해 실행할 수도 있지만 spring boot 1.3.0 버전에서 추가된 기능을 이용해 별도 스크립트 없이 리눅스 환경에서 서비스로 등록해서 실행, 관리할 수 있다. 스프링 레퍼런스에서는 이런 형태를 완전히 실행 가능한 jar (fully executable jar)로 표현하고 있다. 실행 가능한 jar를 만들기 위해서는 maven에 아래 plugin을 추가해야 한다. org.springframework.boot spring-boot-maven-plugin true 그리고 프로젝트를 빌드해서 생성되는 아티팩트를 그냥 스크립트처럼 아래와 같이 실행하면 된다. $ ./my-application.jar 이는 위에 추가한 플러그인으로 인해 생성되는 실행 스.. 2018. 2. 6.
[Spring] @Temporal annotation의 시간 업데이트 문제 특정 데이터의 수정 날짜를 기록하기 위해 아래와 같은 속성으로 관리하고 있었다. @Column(name = "MOD_DATE") @Temporal(TemporalType.DATE)private Date modDate; 이 수정 날짜를 기준으로 동작하는 코드가 있는데, 로직이 이상하게 돌아 확인해보니 modeDate의 속성을 변경해도 DB에 저장되지 않았다. 정확한 증상은 Hibernate를 이용해 해당 Entity를 읽어온 후 시간을 약 30분가량 늦춘 후 저장을 해도 변경사항이 DB에 저장되는 않는것. 관련 내용을 구글링해 보니 비슷한 경우를 겪은 개발자가 있었는데, 관련된 답변을 보니 TemporalType에 따라 데이터 처리 방식이 다른것 같다. 위에 코드에서 사용하고 있던 Temporal.DATE.. 2017. 3. 18.