Java 10

깃털보다 가벼운 인텔리J 아이디어(IntelliJ Idea) 팁 10 - File & Code Template

오늘도 가볍게, 진심 큰 도움이 안되는 팁 하나 공유하고자 합니다. 어찌보면 인텔리J만의 독특한 기능도 아니고, 거의 모든 IDE에 포함되어 있는 기능이기도 한, File Template기능에 대해서 소개하고자 합니다. 어쩌면 진심 제목에 충실한 내용이라 할 수 있겠습니다. File Template : 특정 파일을 새로 생성할 때 기본적으로 포함되어질 구성을 만들고, 그 구성이 파일 생성시마다 적용되도록 하는 기능입니다. 설정화면 윈도우 & 리눅스 : File > Settings > File and Code Templates맥 : Preferences > File and Code Templates 설정 화면은 아래와 같습니다. 설정화면에는 총 4개의 탭이 존재합니다. Files : 파일 템플릿의 종류를 ..

깃털보다 가벼운 인텔리J 아이디어(IntelliJ Idea) 팁 9 - Show Values Inline

간단하지만 아주 유용한 기능 하나 소개하고자 합니다. 디버깅시에 각 함수의 반환값 및 변수의 값을 코드상에서 바로 확인할 수 있도록 해주는 기능입니다. 사실 그다지 좋은 방법은 아니지만, 코드상에서 특정 변수값에 대해서 확인하고자 할 때, 보통 log.debug와 같이 logging framework를 통해서 그 값을 콘솔에서 찍어보는 방법을 많이 쓸꺼라(??) 생각이 듭니다. 예를 들어, 위 이미지에서 처럼 특정 객체의 값 구성을 확인해볼 때, 로그를 찍어볼 수 있습니다.그런데, 굳이 collection객체의 개수라던지 primitive 변수들의 값들을 확인하기 위해서 일일히 log.debug를 사용하는건 어찌보면 낭비가 아닐까 합니다. 그런 수고를 조금이나마 덜 수 있는 방법을 IntelliJ에서는 ..

깃털보다 가벼운 인텔리J 아이디어(IntelliJ Idea) 팁 8

오늘도 가볍게 Extract Interface라는 리펙토링 관련 기능에 대해서 알아보도록 하겠습니다. 우선 아래와 같이 두개의 클래스(Class A, Class B)가 있고 ClassB에는 상수와 두개의 메소드가 있습니다. 해당 클래스 내에서 마우스 오른쪽 클릭을 통해서 Refactor --> Extract --> Interface를 선택합니다. 선택시 아래와 같은 설정창이 나타납니다. Extract interface from : 인터페이스를 추출할 대상 클래스Extract Interface / Rename original class and use interface where possibleExtract Interface : 인터페이스를 추출하지만 소스코드에 바로 적용하지는 않습니다.Rename orig..

깃털보다 가벼운 인텔리J(IntelliJ) IDEA 팁 7

오늘은 Refactoring기능 중 Class 분리(Delegate)에 대해서 알아보고자 합니다. 이 기능은 특정 Class의 길이가 너무 비대해지거나 해당 Class의 기능이 너무 방대해질 때, 이를 세분화시키고자 할 때 유용할 듯 싶어 보입니다. 클래스 추출하기 우선 위와 같이 두개의 Class가 있다고 가정해봅시다. FirstClass에는 변수1개와 메소드 1개가 존재합니다. 이를 따로 클래스를 만들어서 사용하도록 해야 합니다.Refactoring대상이 되는 Class에 커서를 둔 후, Refactor --> Extract --> Delegate을 선택하거나 동일한 메뉴를 마우스오른쪽 버튼으로 클릭하실 수 있습니다. 아래와 같은 창이 나타납니다. Name for new Class : 새로이 생성될 ..

깃털보다 가벼운 인텔리J (IntelliJ) IDEA 팁 6

오늘도 이전 포스팅에 연결해서 refactoring 기능에 대해서 적어볼까 합니다.이전 포스팅은 아래 링크에서 확인하실 수 있습니다. 2016/05/10 - [IDE & Apps/IntelliJ Idea] - 깃털보다 가벼운 IntelliJ(인텔리J)팁 5 - Class & Method Signature변경 오늘 알아볼 refactoring 기능은 Static method를 non-static method로 변경하는 기능과 variable encapsulation기능입니다.Static method를 non-static method로 변경하기 우선 위와 같이 3개의 class가 있습니다.MainClass에 문제의 static 메소드가 하나 존재합니다. 해당 메소드를 non-static method로 변경해..

깃털보다 가벼운 IntelliJ(인텔리J)팁 5 - Class & Method Signature변경

오늘은 IntelliJ의 Refactoring 기능에 대해서 얘기해봅시다. 사실 refactoring이라는게 IDE의 기능을 통해서 뚝딱 효과적으로 될 수 없는것이기는 하지만, 그래도 IDE가 제공하는 기본 기능을 통해서 여기저기 왔다갔다 하면서, 그리고 Copy & Paste를 하면서 코드를 수정하는 수고를 많이 덜 수 있다고 보여집니다. 우선 Class Signature에 대한 refactoring을 알아봅시다. IntelliJ에서 Class level의 signature 변경은 일반 Class를 Generic으로 변경하는 작업을 조금이나마 편하게 해준다. 일단 아래와 같은 형태로 두개의 class가 있다고 가정하자. MyClass는 MyClass2를 아래와 같이 참조한다. 이러한 상황에서 MyCla..

Lombok plugin의 편리성

Java 개발의 최대 노가다 중 하나는 과연 무었일까요? 그건 바로 View Object ( Model Object,,)의 생성이 아닐까 합니다. 1. 변수 선언하고,, 2. Getter / Setting 설정하고,, 3. 추가로 toString 메소드까지... 뭐,,IDE에서 비교적 많은 부분을 지원해주고 있지만,, 이마져도 귀찮을때가 종종 있죠... 이를 생략하게 해주는 플러그인이 있으니 바로 Lombok https://projectlombok.org 이랬던 코드가.. package com.xxxxxx.app.domain.plan; import org.springframework.stereotype.Component; import java.io.Serializable;import java.util.A..

Programming/Java 2015.07.08

STS (Spring Tool Suites) with Gradle

스프링 (STS) 개발 환경에 Gradle을 추가해보자.. Gradle는 Ant -> Maven에 이어 새롭게 떠오르는 build system이라고 보면 될 듯 싶다... Gradle 공식 홈페이지에 따르면 gradle을 아래와 같이 정의하고 있다. Gradle is build automation evolved. Gradle can automate the building, testing, publishing, deployment and more of software packages or other types of projects such as generated static websites, generated documentation or indeed anything else. Gradle combines..

Programming/Java 2015.01.22

Struts2 2.1 버젼과 2.0버젼대의 차이점

정말 이 문제 때문에 몇 시간을 고생했는지 모르겠다. 그도 그럴것이 내가 처음 스트럿츠2를 접한건 2.0.x버젼대였고 지금은 2.1.x 이다. 그 사이에 설정파일에서 변경된 부분이 있었다는것은 꿈에도 모르고 있었고, 상상도 안했다. 그런데 변경된 점이 꽤 많이 있었다....T_T;; 그 중에서도 다음 부분은 정말 모르면 꽤나 고생할 만한 부분이다... Interceptors:FromToexternal-refexternalRefmodel-drivenmodelDrivenstatic-paramsstaticParamsscoped-model-drivenscopedModelDrivenservlet-configservletConfigtoken-sessiontokenSessionResults:FromToredirect..

Programming/Java 2009.08.25

Oracle Procedure로 LOB 넘기기.

이거 해결할려고 구글일 무지막지하게 했다. 기존에 프로시져에 스트림 방식으로 저장을 하게 되면 장문 입력이 안되는 문제가 있기 때문이다. private static CLOB getCLOB( String clobData, Connection conn ) throws Exception { CLOB tempClob = null; try { // create a new temporary CLOB System.out.println("Get Temporary LOB data1"); tempClob = CLOB.createTemporary( conn, true, CLOB.DURATION_SESSION ); System.out.println("Get Temporary LOB data2"); // Open the tem..

Programming/Java 2009.06.01