본문 바로가기

분류 전체보기

Spring과 Oracle 연동시 SQL Trace 걸어두기... (1) 요즘 시간이 엄청 많아지면서(프로젝트 끝나고 마땅한 일감이 없다보니 백수가 되었음..공실기간이 커져서 걱정이..ㅠㅠ..) 한동안 욕심이 있었던 좀더 심층있는 Oracle 공부를 할 시간이 주어지게 되었다. 그러다보니 거기에 나온 예제들을 Spring을 이용하여 연동해보고 싶어진 충동이 생겨서 삽질아닌 삽질의 결과를 정리해보고자 한다 사실 지금 쓰는 내용은 우리가 프로젝트를 하는데 있어서 개발하는 기간에는 필요한 내용이 아니다. 적어도 실제 운영단위 레벨의 부하를 줘가며 하는 테스트를 하는 시점 전까지는 지금 쓰는 내용을 적용할 상황이 없다. 우리가 SQL을 Trace 하는 이유는 WAS가 실행하는 SQL 중 어떤 SQL이 부하를 많이 주는지에 대한 것을 확인하고자 함인데 그러한 부분은 우리가 코딩을 하는..
Spring Framework에서의 독특한 ehcache 사용기... (3) 지난 글에서는 ehcache를 사용하여 cache 데이터를 넣거나 조회하는 서비스 코드에 대해 설명했다. 이제 이 사용기의 마지막으로 앞에서 만든 서비스 코드를 사용했던 코드와 그리고 이 코드를 리뷰하면서 갖게된 개선점을 얘기해보고자 한다. 앞에서 만든 코드도 엄연히 Spring에 등록되는 bean이기 때문에 @Autowired 어노테이션을 통해 해당 서비스 객체를 받을수가 있다. 그리고 캐시 서비스를 사용하는 곳은 사용자가 만든 서비스에서 사용되므로 다음과 같이 작성하였다(이것은 예제용 코드로 내가 실제로 작업한 코드와는 차이가 있다) @Service public class MyImpl implements MyService { private final Log logger = LogFactory.getL..
Spring Framework에서의 독특한 ehcache 사용기... (2) 지난 글에서 Spring에서 ehcache를 일반적인 방법과 다르게 사용하는 이유에 대해 얘기하고 내가 만들었던 소스코드를 올렸다. 이번에는 이 소스코드에 대한 설명을 해보고자 한다 Cache 작업에 대한 공통 인터페이스 소스를 다시 올리면 다음과 같다 public interface CacheService { /** * 캐시에 저장할 값을 리턴하는 객체의 함수를 대신 실행하여 캐시에 고유의 캐시키를 주어 저장한다 * @param obj캐시에 저장할 값을 리턴하는 함수가 있는 객체 * @param methodname캐시에 저장할 값을 리턴하는 함수의 함수명 * @param cachekey캐시키 * @param interval캐시 갱신 간격(0일 경우 캐시 갱신 간격을 체크하지 말고 바로 캐시에서 가져온다)..
Spring Framework에서의 독특한 ehcache 사용기... (1) 한동안 일이 바뻐서 블로그 관리를 못하다가 플젝 구하는 시점으로 바뀌면서 블로그를 보다보니 예전에 쓰기로 했던 Spring에서 ehcache 사용하는 내용에 대해 글을 쓰기로 했는데 쓰질 않았다. 반성하는 마음으로 지금이나마 기억을 더듬어 써보기로 한다. 여기 이 글에서는 Spring 에서 ehcache 설정을 하는 방법 자체를 얘기하진 않겠다. 그런 내용을 보고 싶다면 여기를 클릭해서 확인하면 된다. Spring에서 ehcache 설정에 대해 아주 잘 정리되어 있다 그럼 이제부터 본론으로 들어가도록 하겠다. 일반적인 Spring에서 ehcache를 사용할 경우 운영하는 사람 입장에서 받아들이기 힘든 부분이 하나 존재한다. 그것은 내가(여기서는 운영자가 될 것이다) 캐쉬되어 있는 내용을 수정할 경우 그것..
Spring Framework의 ContentNegotiatingViewResolver에 대하여... (3) ContentNegotiatingViewResolver에 대하여 XML로 출력하는 것에 대해서는 앞에서 살펴보았다. 그럼 이제 JSON과 Text 출력에 대해 알아보도록 한다 2) JSON(MappingJacksonJsonView) XML로의 출력은 사람이 알아보기 쉬운 장점이 있으나 실제 사용하는 데이터에 비해 부가적인 정보들이 지나치게 많이 내려가는 문제가 있다(태그명 등..) 이런 점을 해소하기 위해 나온것이 JSON 포맷이다. 최대한 군더더기가 없는 실제 사용되는 데이터만 내려가므로 데이터 전송량이 XML에 비하면 상대적으로 작지만 한편으로는 사람 눈으로 알아보기엔 직관적이지 않은 구조가 단점이다. 그러나 컴퓨터가 잘 알아보기 때문에 이 부분은 패스.. 이 문서에서는 JSON 포맷에 대한 구체적인..
Spring Framework의 ContentNegotiatingViewResolver에 대하여... (2) 저번엔 내가 했던 프로젝트의 요구사항과 그로 인한 ContentNegotiatingViewResolver 의 리턴 타입 설정에 대해 얘기를 했었다. 이젠 ContentNegotiatingViewResolver에서 리턴 포맷이 결정된 뒤 이 포맷으로 결과를 만들어주게 될 View에 대해 언급해보도록 하겠다 저번에 프로젝트에서 요구했던 결과 포맷은 XML, JSON, 그리고 일반 텍스트라고 말했었다. 그럼 이 부분에 대해 하나씩 언급해보도록 하겠다 Spring의 컨트롤러에서 함수가 다음과 같이 객체를 리턴하게 되면 ContentViewResolver는 리턴포맷을 결정하여 그에 따른 작업을 진행하게 된다.. public Result getInfo(HttpServletRequest request, HttpSer..
Spring Framework의 ContentNegotiatingViewResolver에 대하여... (1) 3월달에서 시작한 프로젝트가 6월에 마무리가 되었다. 업체명과 어떤일을 했는지 상세하게 말할수 없지만 이번에 했던 일은 웹사이트 구축이 아니었다. 하드웨어 단말에서 웹URL을 호출하여 리턴되는 XML이나 JSON 또는 Text 문자열을 파싱하여 그에 따른 결과값으로 작업을 하는 일이다. 어찌보면 Open API와 비스무리한 일을 했다. 이번에 이 프로젝트의 아키텍처 역할을 하면서 Spring 기반으로 작업을 진행했는데 이때 사용했던 기술을 언급하고자 한다. 업무의 기술적인 큰 요구는 2가지였다 1) 단말이 원하는 데이터를 XML, Json, 또는 Plain Text로 받아야 한다. 단 이때 호출하는 URL이 리턴받는 데이터 타입에 따라 다른 형태면 안된다(사실 이 조건은 필수적인 조건은 아니었으나 업무를..
Spring Framework의 메시지 컨버터를 이용한 FileDownload 구현(3) 이제 마지막으로 File을 처리하는 메시지 컨버터를 Spring 환경설정에 추가해주는 일이 남았다. 예전글에서 얘기했듯이 태그를 추가하면 사용자가 만든 메시지 컨버터를 추가할 수 없다. 그래서 태그를 빼고 수동으로 일일이 설정해줘야 하는데 무엇을 설정해야 하는지는 여기를 클릭해서 참조하길 바란다. 수동으로 설정하는 부분에 보면 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter 클래스를 bean으로 설정하는 부분이있다. 여기에 보면 messageConverters 프로퍼티를 설정하는 부분이 있는데 여기에 사용자가 만든 메시지 컨버터를 추가해주면 된다 messageConverters 프로퍼티를 설정하는 부분을 보면 여러..