본문 바로가기

분류 전체보기

메서드 추출 (Extract Method) 단축키가 작동하지 않을때.. IntelliJ에서 메서드 추출 (Ctrl + Alt + M) 이 작동하지 않는데, 아무래도 다른 프로그램이 단축키를 선점하고 있는 것 같아 확인해봤다. 범인은 바로 NVIDIA Geforce Experience 였다. NVIDIA Geforce Experience 를 실행하고, 일반탭에서 설정을 누른다. 그리고 키보드 바로가기 -> 일반 -> 마이크 끄기/켜기 토글의 단축키를 삭제시켜준다. 그럼, 이제부터 메서드 추출 단축키를 사용할 수 있게 된다. 더보기
IntelliJ에 Run Dashboard Tool Window 추가하기. 이 곳에서 더 쾌적하게 볼 수 있습니다. Intellij의 2017.2 버전에서 Run DashBoard라는 기능이 추가되었다.기존에는 run/debug가 서로 다른 Tool Window에서 실행되었는데, Run Dashboard를 사용하면 이를 하나의 Tool Window에서 볼 수 있다.어쩌다보니, IDE가 추천을해주서 사용하게 되었는데, 프로젝트를 다시 구성한 후 Run Dashboard를 찾아볼수 없었다.Spring Boot에서 Run Dashboard를 활성화 하기 위해선 먼저 아래의 VM Option을 추가해야한다.IntelliJ IDEA 2017.2 EAP: Run Dashboard for Spring Boot Last week we've published a new IntelliJ IDEA.. 더보기
Using IntelliJ File Template Using IntelliJ FileTemplate. 프로젝트를 진행하다 보면, 동일한 Template의 파일을 여럿 작성하게 된다.예를 들면, 아래와 같은 경우이다.공통 코드를 조회하는 RestController이다.CommonCodeRestController.javaimport org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RestController;import project.pilot.api.common.base.BaseController;@RestController public class CommonCodeRestController extends BaseRestC.. 더보기
fancy tree에서 커스텀 아이콘 추가하기. fancy tree를 최초 initailize 할때, icon이라는 함수를 사용해서 icon을 변경할 수 있다. icon 함수는 event와 data를 argument로 받고, data의 data.node.data에서 트리의 데이터에 접근할 수 있다. node.data에서 특정값을 확인하고 icon을 변경하고 싶으면, 클래스명을 return 하면 되고, return 값이 없다면.. 기본 icon이 적용된다. 클래스명이 리턴되면, fancy트리는 해당 노드의 span 태그에 fancytree-custom-icon 와 내가 리턴한 클래스명을 클래스로 추가한다. 그리고 나는 아래와 같이 해당 클래스를 추가하면 된다. span.fancytree-custom-icon.fancytree-use-yn-no { bac.. 더보기
Spring Security SessionDestroyListener 스프링 시큐리티에서 세션 디스트로이 이벤트 전후작업 하기. 사용자가 로그아웃할때, 로그를 남겨야한다는 요구사항이 들어왔다. 사용자가 로그아웃 버튼을 클릭해서 로그아웃을 하면, SimpleUrlLogoutSuccessHandler를 상속받아 onLogoutSuccess 메서드를 구현해서 처리할 수 있다. @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { // 전 작업 super.onLogoutSuccess(request, response, authenticatio.. 더보기
Spring Security 로그인 성공 혹은 실패 후 부가 작업 하기. 요구사항. 로그인을 5번 이상 실패하면 계정 잠금 처리. 먼저 사용자 테이블에 로그인 실패 건수를 업데이트할 컬럼을 생성한다. 로그인이 실패하면, 해당 컬럼에 +1 건을 추가하고, 로그인을 성공하면, 0으로 초기화 해주는 로직을 넣어보려고 한다. 스프링 시큐리티를 사용하며, 로그인 성공시 부가 작업을 하려면, org.springframework.security.web.authentication.AuthenticationSuccessHandler를 구현해야 한다. 별도로 authenticationSuccessHandler를 지정하지 않으면 기본적으로 org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler를 사.. 더보기
MyBatis에서 프로시져 호출하기. MyBatis에서 프로시져를 호출할때, 아래와 같은 오류가 출력된다면.. 매개 변수 번호 0에 값이 설정되지 않았습니다. MyBatis의 tag에 statementType="CALLABLE" 이 설정되어 있는지 확인하자. 더보기
ToStringStyle.MULTI_LINE_JSON_STYLE Apach CommonLang의 ToStringBuilder를 많이 사용한다. 그런데, 꼭 있을것만 같은 MULTI_LINE_JSON_STYLE이 존재하지 않는다. 그래서 Custom Style을 하나 만들어봤다. 내가 만들고 싶은 스타일은.. 기본적으로 JSON_STYLE 과 MULTI_LINE_STYLE을 합치면서, 또한 null 값은 포함하지 않도록 하고 싶었다. 그렇게 완성한 Custom Style은 아래와 같다. import org.apache.commons.lang3.SystemUtils; import org.apache.commons.lang3.builder.ToStringStyle; /** * @author Jason, Moon * @since 2018-03-15. */ public cla.. 더보기
MyBatis에서 Paging 처리 하기. MyBatis를 통해서 Paging 처리 하기. (MS-SQL 2012 이상) 최근 진행중인 프로젝트를 마무리 해가며, 뒤로 뒤로.. 미뤄둔 공통 Paging 작업을 처리했다.반영할 운영서버에서는 MS-SQL을 사용하고 있었고, 버전은 2016으로 최신버전이었다. MS-SQL에서 페이징을 처리하는 방법은 크게 2가지로 요약할 수 있다고 한다. 1. ROW_NUMBER 함수를 이용하는 방법.서브 쿼리에서 ROW_NUMBER 함수를 이용해 행번호를 할당하고, 상위 쿼리에서 이를 기준으로 필터링하는 방법이다.대략 아래와 같은 구조를 가지게 된다.SELECT * FROM ( SELECT ROW_NUMBER() OVER(ORDER BY ..) AS ROW_NUM, ... ) WHERE ROW_NUM BETWEEN.. 더보기
Thymeleaf에서 날짜 관련 Utility 사용하기. Thymeleaf를 사용할때, 개발자는 꽤 많은 유틸리티를 사용할 수 있다. 그 중, 날짜 관련 유틸인 #dates 는 java.utils.Date 오브젝트를 위한 유틸리티이다. 아래와 같은 표현식을 사용할 수 있다. Dates#dates : utility methods for java.util.Date objects:/* * ====================================================================== * See javadoc API for class org.thymeleaf.expression.Dates * ====================================================================== */ /* * For.. 더보기