본문 바로가기

Framework

(22)
Mockito.thenThrow() 주의사항! 예외를 던지도록하는 테스트를 할 때 Exception 안에 메시지를 활용할 경우 Exception.class 를 사용하지말 고 new Exception()을 사용하자. 일단 예외 클래스를 보자 /** * 이미 종료된 대회일 때 예외 * * @author jammini */ public class AlreadyContestEndException extends BadRequestException { public AlreadyContestEndException() { super("이미 종료된 대회입니다."); } } 서비스를 모킹해서 예외를 던지도록 할 것이다. @WebMvcTest(ContestInfoApi.class) class ContestInfoApiTest extends WebMvcBase { @Mo..
Spring + @Lazy https://github.com/antop-dev/spring-lazy 요즘 MSA를 공부하면서 아래와 같은 문구를 보았다. 마이크로서비스에서는 완전 자동화를 달성하기 위해 초소한의 시동/종료 시간을 갖도록 애플리케이션의 크기를 가능한 한 작게 유지하는 것이 극단적으로 아주 중요하다. 이를 위해 마이크로서비스에서는 객체와 데이터의 지연 로딩lazy loading에 대해서도 고려해봐야 한다. 이 때 떠오른 단어는 Spring과 @Lazy이다. 스프링 빈 설정시 @Lazy 애노테이션만 달아주면 이 빈을 가져오는 시점에 생성하기 때문에 모든 빈을 처음 초기화시에 만들지 않는다. 그런데 약간의 의문사항이 있어서 테스트 해봤다... 구글링을 대충 해도 나오는 자료이지만 직접 해봤다. 등장 클래스 아래와 같이 3..
Mybatis Interceptor + RowBounds 를 이용한 페이징 처리 https://github.com/antop-dev/example/tree/master/mybatis-rowbounds-example Mybatis에 RowBounds 클래스를 이용해서 페이징 처리를 할 수 있다. package org.antop.mybatis.mapper; import org.antop.mybatis.model.Employee; import org.apache.ibatis.session.RowBounds; import java.util.List; public interface EmployeeMapper { List select(RowBounds rowBounds); } select * from employees order by emp_no asc 위와 같이 맵퍼와 XML 이 있다. Ro..
GWT with Maven Installed the Java SDK If you don’t have a recent version of the Java SDK installed, download and install Sun Java Standard Edition SDK. 적어도 이 문서를 찾아보는 이라면 자바는 이미 깔려 있을 것이라고 굳게 믿는다... -_-/ Installed Eclipse or your favorite Java IDE In these tutorials, we use Eclipse because it is open source. However, GWT does not tie you to Eclipse. You can use IntelliJ, NetBeans or any Java IDE you prefer. If..
AJAX Login with Spring Security Introduction 스프링 시큐리티를 이용하여 로그인을 처리할 때에 AJAX 방식으로 로그인 하는 방법이다. 크게 2가지로 볼 수 있겠다. ㅎㅎ Using Handler 기본적인 10단계의 필터 체인 중에 UsernamePasswordAuthencationFilter 단계의 "authentication-success-handler-ref"와 "authentication-success-handler-ref" 를 이용하는 방법이다. 클래스 구조를 보면 아래와 같다. 아래와 같은 필터 체인의 순서롤 작동하게 된다. 구현 방법은 각각의 핸들러에서 응답을 JSON이나 원하는 포멧으로 만들어서 출력하면 된다. public class LoginSuccessHandler implements Authenticatio..
Spring Security Session Destroy Intoduction Spring Security 사용 중에 "사용자의 로그인 시간과 로그아웃 시간을 기록해야 한다" 라는 임무가 떨어졌다 -_- 문제는 이 로그아웃 이라는게 약간 골치 아프다.. 사용자가 직접 로그아웃 버튼을 클릭해서 로그아웃을 한다면 나이스 하지만... 대부분은 용무가 끝나면 그냥 브라우저를 끄거다 바로 다른 사이트로 넘어가게 된다. 이 경우에는 어떻게 하지? 개발자의 눈으로 보면 로그아웃 == 세션 만료로 볼 수 있다. 다른 사이트로 가거나 브라우저를 꺼버리게 되면 WAS의 기준으로 일정 시간이 지나면 세션이 만료되게 된다. 이 세션 만료를 캐취해서 처리를 하는 방법을 알아보자. Using HttpSessionListener 서블릿의 세션 리스너를 이용한 방법이다. 아래와 같이 Ht..
MySql Password Encoder 개인적으로 자주 사용하는 Spring Security Password Encoder 입니다. MySql 의 password() 펑션 알고리즘 사용합니다. import java.security.GeneralSecurityException; import java.security.MessageDigest; import org.springframework.security.crypto.password.PasswordEncoder; public class MySqlPasswordEncoder implements PasswordEncoder { @Override public String encode(CharSequence rawPassword) { if (rawPassword == null) { throw new N..
SpringDM Test Project - hello.osgi SpringDM 환경 구성 후 이것 저것 잘 되는지 테스트하기 위한 기본 샘플을 만들어 봤습니다. 처음에 잘 못하니까 무지하게 고생 하네요;; 일반적인 스프링 MVC 구조로 보면 아래와 같습니다. 하나의 프로젝트에 컨트롤러/서비스/퍼시스턴스(마이바티스) 등등 모든 구성이 다 되어있죠 ㅎㅎ 이 구조를 각 레이어 기준으로 OSGi 구조로 변경해 보았습니다. web/service/persistent/core 4개의 번들로 나누어 만들어 봤습니다. 아래 그림은 그냥 사용할 데이터베이스 스키마입니다. 이제 하나하나 번들화 해서 작업 해봐야 겠습니다. 일단 안되네요... classpath*: 관련된 것은 다 안되는 듯 합니다... 아닌가? 작업하면서 추가한 번들 목록입니다. org.mybatismybatis3.2...