2020/05/13 - [framework/Springboot] - spring 프로젝트에서 springboot 프로젝트로 migration 하기 (1) - pom.xml 위의 글에서 springboot 전환의 첫 걸음인 pom.xml 전환을 해 보았다. 그다음은 web.xml 파일을 제거하는 것이다. 추세가 xml config에서 java config로 전환중인데 이런 web.xml 도 java config로 전환을 할 수 있다. (개인적으로는 익숙해서 그런지 xml config가 더 가독성이 좋은것 같다..) AS-IS 프로젝트의 web.xml 은 이런 모습이었다. ABC System logbackConfigLocation classpath:logback/logback.xml contextConfig..

요즘? MSA가 많은 IT 선도기업들 사이에서 사용이 되면서 보수적인 IT 회사들도 그 장점에 혹해서 기존의 Monolithic Architecture에서 탈피하고 싶어하는 움직임을 보이고 있다. 스프링 개발팀은 이렇게 추세가 변할것을 예상하고 Monolithic Architecture에서 Micro Service Architecture로 전환을 용이하게 할 수 있도록 springboot와 spring cloud 프로젝트를 시작했고 현재 이것들은 MSA를 하기 위해서는 필수적인 요소가 되었다. springboot는 spring과 다른것이 아닌 spring을 경량화한 마이크로서비스 프레임워크라고 보면 된다. 기업에서는 변화를 바라지만 또 변화를 바라지 않는다. 이게 무슨 X소리인가 싶겠지만 그렇다.. 즉 ..

이클립스 환경에서 SVN sync를 맞추고 update든 commit이든 하려고 하면 아주 가끔 다음과 같은 오류창이 뜨면서 당황하게 한다. 나는 commit 할것이 하나도 없고 update만 받아야 될 상황이고 프로젝트가 작다면 그냥 얼른 다 지워버리고 새로 check out을 받는것이 정신건강에 좋고 시간도 단축된다. 하지만 개발해놓은것이 많다면 이 문제는 어떻게 해서든지 해결하고 넘어가야 한다. 일단 저 오류메세지대로 run 'svn cleanup' first 를 지금껏 여러번 해봤는데 이걸로 된적은 한번도 없는것 같다. run 'svn cleanup' first 는 이렇게 하는건데 참고만 하길 바란다. 위의 방법으로 해결이 되지 않았다면 그 다음은 SQLite 라는것을 이용하는 방법이 있다. DB..
logback에 spring profile을 왜 적용하는가? 이유는 간단하다. 하나의 파일만 만들기 위해서다. spring profile을 적용하지 않는다면 logback.xml 하나만 있어도 될걸 logback-dev.xml, logback-prd.xml 등등 각 PHASE에 맞는 파일들을 생성한 뒤 배포를 하고 파일을 덮어 씌우는 형식으로 하거나, 아니면 직접 서버에 들어가서 경로를 수정하거나 하는 번거로움이 있다. 비단 logback 뿐만 아니라 spring profile은 여러모로 배포하는 입장에서는 무척 유용하다. springboot 를 사용한다면 이와 결합하여 간단하게 spring profile을 적용할 수 있겠지만 springboot를 사용하지 않는 프로젝트라면 logback에 spring ..
RESTful은 REST + WebService 으로 REST 원리를 따르는 시스템 정도로 이해하면 될듯 싶다. 그럼 REST(REpresentational State Transfer)는 무엇일까? HTTP URI (eg. /customer)로 자원을 표현하고 Method(GET, POST, PUT, DELETE, OPTION, HEAD ...)를 통해 자원에 대한 처리하도록 설계된 아키텍처를 의미한다. 간단히 사용할수 있고 가볍고 명시적이고 HTTP 프로토콜의 인프라를 사용하므로 별도의 인프라를 구축할 필요도 없다. 이와 같이 수많은 장점을 가지고 있기에 필수적으로 알고 있어야 할 기술이다. 일단 샘플을 구현하기 앞서 REST API 설계부터 진행을 해보자. JD Method URI 고객의 목록 조회 ..
maven으로 프로젝트를 진행하다보면 3rd party library를 가져와야 하는 상황이 있다. 3rd party library는 maven central repository에는 물론 등록되지 않은 library이다. 일반적으로 이럴 경우에는 remote repository인 내부 nexus에 이런 파일들을 올려놓고 사용을 하지만 여건상 nexus도 구축을 하지 못하는 상황에서 사용할 수 있는 방법이다. 첫번째 방법은 systemPath 를 이용하는 방법이다. pom.xml com.oracle ojdbc 8 system ${project.basedir}/lib/ojdbc6.jar pom.xml 에 일반적으로 작성하는 dependency에 추가적으로 scope와 systemPath를 추가적으로 입력해준..
springboot 2.0 부터 기본 JDBC Connection Pool 로 지정이 된 hikariCP 라는 JDBC Connection Pool 이 있다. 나온지가 꽤 오래 되었지만 매번 쓰던 Spring의 SimpleDriverDataSource 라던지 Commons DBCP 만 사용하다가 springboot에 관심을 가지고 공부하던 도중 hikariCP 를 알게 되었다. 직접 성능 테스트를 해보지는 않았지만 이미 많은 레퍼런스를 가지고 있고 그로인해 검증이 되었고 해서 hikariCP를 적용해 보았다. hikariCP를 사용하기 위해서 가장 먼저 해야 할 일은 라이브러리를 추가해줘야 한다. pom.xml (maven project) com.zaxxer HikariCP 3.4.1 hikariCP는 ..

이클립스에서 SVN을 사용하여 프로젝트를 진행할때 SVN Repository와 sync를 맞춰 보면 위와 같이 내가 의도치 않은 target 하위에 있는 내용들도 모두 나오는걸 볼수 있다. 이렇게 target 하위의 내용들이 모두 나오게 되면 가독성도 떨어질뿐더러 sync 속도도 느려지는 문제가 있다. 이런 target 클래스는 sync 대상에서 제외시키는것은 이클립스의 설정으로 해결할 수 있다. Window -> Preferences -> Team -> Ignored Resources -> Add Pattern 으로 진입하여 제외할 파일 및 폴더 명에 대한 패턴을 기입한다. 이렇게 해서 되면 다행인거고 종종 이것이 안먹히는 경우가 발생하기도 한다. 이럴 경우에는 위와 같이 전역키워드를 추가하는 방법과 ..