properties 파일을 구성할때 암호화가 필요한 부분들이 존재한다. 가장 대표적인 예가 datasource의 username, password 부분이다. 이것들은 정말 다양한 방법을 통해서 암호화가 되고 있지만 요즘 추세는 datasource의 설정을 ApplicationContext가 아닌 properties(yml) 파일에서 하므로 여기에서 암호화를 하는 방법에 대해서 알아보자. properties 파일에서 암호화를 쉽게 할수 있도록 도와주는 Jasypt (Java Simplified Encryption) 라는 것이 있다. 이것을 사용해서 암호화를 해보자. Springboot에서 Jasypt를 사용하여 properties 파일 암호화 pom.xml com.github.ulisesbocchio ja..
우리가 보통 사용하던 Spring MVC + RDBMS 패턴은 Blocking IO 방식이다. Blocking IO 방식이라는 것은 요청을 처리하기 전까지는 다른 작업을 수행할 수 없는 상태라는 것을 말한다. 동시에 여러 요청을 처리하기 위해서는 Thread 수를 늘려서 하는 방법이 존재하기는 하지만 이도 오버헤드가 발생한다. 이를 개선하기 위해 나온 기술이 Non-Blocking IO 방식인 Spring WebFlux 이다. Spring WebFlux 는 동시에 처리되어야 할 많은 요청에 대해 효율적으로 처리해줄 수 있다. The other is a fully reactive stack that takes advantage of Spring WebFlux and Spring Data’s reactive..
Spring에서 외부 환경변수의 값을 가지고 오는 방법은 다양하다. 그중 하나가 PropertyPlaceholderConfigurer 를 통해서 가져오는 방법이다. 가장 일반적인 방법이다. 사용법은 다음과 같다. classpath*:/config/test.properties 위와 같이 작성을 잘 했는데 뭘 해도 값을 못가져오는 경우가 있다. 이를테면 java에서 @Value("${testkey}") 이런식으로 test.properties에 정의한 testkey에 대한 value를 얻는다거나 ApplicationContextAware 의 구현체로부터 ApplicationContext를 가지고 와서 getEnvironment().getProperty("testkey") 를 해서 가지고 온다거나 하는 방식 모..
일전에 springloaded를 이용하여 일반적인 tomcat 개발환경에서 hot swapping을 하는 방법에 대해 다룬적이 있었다. Eclipse, tomcat 환경에서 hot deploy 적용하기 (with springloaded) springloaded는 hot deploy를 가능하게 해주는 기술 중 하나이다. hot deploy는 뭐냐? 쉽게 설명을 하자면 소스의 변경을 was의 재기동 없이 반영을 해주는 것이라고 생각 하면 된다. was의 재기동은 상황에 oingdaddy.tistory.com 마찬가지로 springboot를 쓸때도 이런 기술은 적용이 가능하다. springboot는 embeded tomcat 이 들어있고 이 또한 간단하게 hot swapping 을 할 수 있다. 무료로 사용할..
springboot로 기존에 있던 프로젝트를 전환을 하고 화면개발을 시작하는데 JSP 파일을 수정하고 아무리 새로고침을 해보고 캐시도 날려보고 요란법석을 떨어도 반영이 되지 않았다. 서버를 재기동해야만 이게 반영이 되는데 이래서는 도저히 쓸수가 없다고 느끼고 방법을 찾아보니 방법이 있다. application.properties에 한줄만 추가해주면 된다. server.jsp-servlet.init-parameters.development=true 위 문구 추가하고 재기동! .... 안된다. 문제가 있었다. 위의 방법은 springboot 2.0 미만에서 동작을 한다는 것이다. springboot 2.0 이상에서는 다음과 같이 작성해야 한다. server.servlet.jsp.init-parameters...
Quartz scheduler란? 거의 모든 Java 응용 프로그램에 통합 할 수 있는 풍부한 기능의 오픈 소스 작업 스케쥴 라이브러리이다. 보통 배치작업이나 변경된 정보를 주기적으로 reload 해주기 위해 사용한다. 대략적인 구조는 이러하다. 스케쥴러의 특성상 언제(Trigger)와 무엇을(Job Detail) 로 구성되어 있다. 일단 Quartz를 사용하기 위해서는 dependency 추가가 필요하다. pom.xml org.quartz-scheduler quartz 2.3.2 추가가 되었다면 샘플을 작성해 보도록 하자. Quartz Scheduler Sample 위의 그림처럼 Scheduler는 Trigger를, Trigger는 Job을 가지고 있는 구조이다. sampleJob이라는것은 sample..
spring의 환경변수를 정의하는 역할을 하고 있는 application.properties 파일의 내용을 가지고 오는 방법은 여러가지가 있다. 하지만 이 여러가지 방법들은 사용을 하기 번거로울수도 있고 또한 bean이 아닌 POJO에서 바로 사용할수는 없다. 하지만 프로젝트를 진행하다보면 분명 이런 POJO에서도 application.properties에 있는 값들을 사용하고 싶은 경우가 분명히 있다. 이경우 매번 applicationContext를 가지고 와서 getBean 하여 사용을 하는것은 바람직하지 않기에 이를 Util 클래스로 만들어서 쉽고 간단하게 사용할 수 있도록 해보자. ApplicationContextServe.java import org.springframework.beans.Bea..
spring에서 mysql datasource를 설정하는 방법이다. pom.xml 에서 mysql 연동을 위한 driver를 가지고 온다. mysql mysql-connector-java 8.0.20 applicationContext에서 datasource 설정을 다음과 같이 한다. (xml config version) url 에서 ip, port, dbname을, username, password를 해당 db의 정보에 맞게 수정해 주면 된다. url 뒤에 옵션으로 붙은 useSSL, serverTimezone, useUnicode, characterEncoding 등은 일반적은 프로젝트에서 사용되는 옵션이다. timezone과 encoding 등의 이슈를 잡아준다. 끝!