본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


전체 글674

Gradle에서 Lombok이 포함된 프로젝트 export시 유의사항 롬북을 활용해서 코딩을 할 때 일반적으로 STS에서 Run을 실행하면 문제없이 선언한 에노테이션이 반응을 잘 한다. 그리고..Maven으로 만든 프로젝트에서도 export를 활용하여 war파일로 만들 때에도 롬북을 활용한 에노테이션이 마찬가지로 잘 되는 것 같았다. 그래서 Gradle로 만든 프로젝트를 export했는데 서비스로 선언한 클래스들이 null이 나오는 것 이였다. @Autowire 에노테이션을 달아주면 문제없이 잘 되는데..그러면 롬북을 쓰는 의미가 없어서 삽질을 좀 하였다. ​ 아무튼, 프로젝트를 Gradle이 포함된 형식으로 만들었다면, 따로 선언(?)을 안해주면 롬북으로 만든 에노테이션이 프로젝트 export를 하는 경우 포함되지 않아서...서비스가 null입니다...라는 당황스런 오류.. 2019. 4. 29.
STS 버전 4.2.0에서의 스프링부트 시작 및 빌드하기 스프링 부트는 잘 알려진바와 같이 스프링 프레임워크에서 파생된 녀석으로...조금 더 스프링 프레임워크를 쉽게 접근하기 위해 탄생한 프레임 워크이다. STS라는 개발도구가 스프링 부트 개발시 많이 사용된다 해서 최신버전을 받아서 진행하여 보았다.(2019년4월기준, 버전은 4.2.0) ​ 이클립스나 전자정부 프레임워크, 인텔리제 및 STS 같은 개발도구를 사용하다보면 자바와 관련된 패키지 관리도구는 2개로 나뉘는데, Maven이랑 Gradle이다. 하도 Gradle로 많이들 사용한다고 이야기해서..이번기회에 STS를 설치한다음에 Gradle로 프로젝트를 만들어 보았다. ​ 친절한 구글신 덕분에 아무문제없이 작업이 되다가..이제 빌드해서 war파일로 만들어봐야지 하고 빌드를 찾아는데..왠걸..빌드와 관련된 .. 2019. 4. 29.
Mybatis와 일반적인 DB커넥션 그리고 DBMS의 속도에 관해 약 5백만건 정도 되는 데이터베이스에서 Mybatis를 활용하여 데이터를 가져와야 되는 부분이 있었다. 속도는 0.1~0.2초정도 걸렸으나 아무래도 데이터가 많아지면 많아질수록 속도가 느릴 것 같았다. 이에 DBMS를 활용해서 쿼리를 보내보니 왠걸? 0.01초~ 0.03초사이가 나오는 것이었다. ​ 아무리 인덱스를 주고 Mybatis 세팅을 해 보아도 속도차이가 계속 나서 일반적인 커넥션 방법을 활용해서 데이터베이스 접속을 해 보았다. //...생략 public class DBTester { public static void main(String[] args) { Connection conn = null; java.sql.PreparedStatement psmt = null; ResultSet res =.. 2019. 4. 29.
Software caused connection abort: socket write error 해당 오류는 소캣이 끊어진 상태에서 끊어진 소캣을 다시 활용해서 응답(Response)하는 경우 발생하는 에러이다. ​ 일반적인 상황에서는 잘 발생되지 않으며, 사용자가 직접 구현한 소켓서버에서의 close현상 이라던지, 데이터베이스와의 연결에서의 문제로 인한 것 이라던지, 서버의 timeout이 짧아 발생하던지..3가지 정도가 구글링을 하니 찾을 수 있는 내용 이였다. ​ 하지만 이번에 만난 경우는 3가지 중 해당되는 것은 없었 던 것 같다. ​ 1. 상황 서블릿에서 제공되는 Filter를 상속받아 주고받는 데이터에 따른 필터링을 했었다. 주고받는 데이터를 확인하여 유효하지 않는 요청값은 데이터베이스나 컨트롤러에 아에 접근 못하게 하는 역할을 하는 기능이였었다. 처음에는 아무런 오류가 나지 않았는데, .. 2019. 4. 29.
Spring 또는 전자정부, AOP가 되지 않는 경우 스프링을 사용하는 주된 이유중 하나는 바로 AOP라는 강력한 기능 때문이다. 전자정부에서도 이러한 AOP를 사용해서 중복되는 작업을 분리하는데.. 간혹 AOP설정을 아무리 잘 했다고 생각하더라도 되지 않는 경우가 발생한다. 예를들어..컨트롤러에는 안걸리면서 인터페이스를 상속받은 서비스에만 걸리는 경우를 만나기도한다. 그 이유는..스프링 AOP는 2가지 방식이 존재한다. JDK Dynamic Proxy, CGLIB를 이용하여 프록시를 생성하는 방식이다. 돌아다니는 소스코드나 예제는 JDK Dynamic Proxy방식을 활용하는 경우가 많은데.. 해당 구현 방식은 인터페이스를 기반으로 프록시 객체를 생성하기 때문에 인터페이스에 정의되어 있지 않은 메서드에 대해서는 AOP가 적용되지 않는다. 그럴경우에는..C.. 2019. 4. 29.
페이징 처리, 페이징 클래스 관계형 데이터베이스와 관련된 프로젝트에서는, 대부분의 고객들이 페이징 처리를 무척이나 좋아하고 원한다. 페이징 알고리즘은 한번 만들어두면 나중에는 복붙형식으로 쓰이는데.. 한번 만들 때 워낙 햇갈리고 짜증나는일임에 틀림없다. 아래소스코드는 총 갯수, 크기, 보여질 갯수 및 현재 페이지수를 받아서 HashMap으로 페이징과 관련된 데이터를 리턴하는 클래스이다. import java.util.HashMap; public class PageUtilBean { /* total : 총 페이지 * pgSize : 한개 페이지에서 보여질 갯수, 리스트의 숫자 * ROWSIZE : 하단에 보여질 페이징 갯수, 클릭해서 이동할 페이지숫자 * curPage : 현재 페이지 */ public HashMap makePageD.. 2019. 4. 29.