moonscode 236

학습 // Spring // DI // Test

업데이트 :: 2018.08.22 스프링 테스트DI 컨테이너와 빈의 테스트빈의 단위 테스트의존컴포넌트의 모의화DI 컨테이너에서의 빈의 통합테스트스프링 TestContext 프레임워크DI 컨테이너 설정DI 컨테이너의 라이프사이클 제어프로파일 지정테스트용 프로퍼티 값 지정스프링 테스트기능Junit, TestNG 라는 테스팅 프레임워크 사용해서 스프링의 DI 컨테이너 동작트랜젹션을 테스트 상황에 맞게 제어애플리케이션 서버를 사용치 않고 스프링 MVC 동작을 재현테스트 데이터를 적재하기 위해 SQL을 실행RestTemplate을 이용해서 HTTP 요청에 대한 임의의 응답을 보내는 기능DI 컨테이너와 빈의 테스트다음과 같은 애너테이션을 테스트 하는 모듈@Controller@Service@Repository@Com..

Spring/DI & AOP 2018.08.22

문제 // Codility // Sorting // NumberOfDiscIntersections // (성능부족)

업데이트 :: 2018.08.21 문제코드결과문제NumberOfDiscIntersections Compute the number of intersections in a sequence of discs. 코드1차 풀이class Solution { public int solution(int[] A) { // 디스크에 경계가 있음 // [1, 5, 2, 1, 4, 0] int pairs = 0; for(int i=0; i 10000000 ? -1 : pairs); } } 2차 풀이import java.util.*; class Solution { public int solution(int[] A) { // == 최소값 & 최대값 배열 == MyArr[] arr = new MyArr[A.length]; for(i..

CS/코딜리티 2018.08.21

문제 // Codility // Sorting // MaxProductOfThree

업데이트 :: 2018.08.21 문제코드결과문제Maximize A[P] * A[Q] * A[R] for any triplet (P, Q, R). 코드1차 풀이import java.util.*; class Solution { public int solution(int[] A) { // 3개의 요소의 곱이 가장 큰것 // (-)가 3개일때 => (-) // (-)가 2개일때 => (+) // (-)가 1개일때 => (-) // (-)가 0개일때 => (+) Arrays.sort(A); if(A[0] * A[1] > A[A.length-2] * A[A.length-1]) { return A[0] * A[1] * A[A.length-1]; } else { return A[A.length-3] * A[A.len..

CS/코딜리티 2018.08.21

학습 // Spring // MVC // Locale

업데이트 :: 2018.08.21 Locale 결정Locale 활용UI를 이용한 Locale 전환LocaleChangeInterceptor 빈정의Locale 전환용 화면요소Locale 결정org.springframework.web.servlet.LocaleResolver 인터페이스스프링 MVC는 Locale정보를 어디서 가져오느냐에 따라 다른 구현 클래스르 가짐구현클래스AcceptHeaderLocaleResolverHTTP 요청의 Accept-Language 헤더에 설정된 Locale 정보를 활용Locale을 변경하고 싶다면 사용자가 브라우저의 언어 설정을 바꾸 수 있음SessionLocaleResolverHTTP 세션에 저장된 Locale 정보를 활용Locale 변경은 LocaleChangeInterc..

Spring/MVC 2018.08.21

학습 // Spring // MVC // 정적리소스

업데이트 :: 2018.08.21 정적리소스기본서블릿과 DispatcherServlet의 공존스프링 MVC 리소스 취급방법캐시제어ResourceResolver & ResoureceTransformer정적리소스mavengradlesrc/main/webappJavaEE를 준수하는 웹 애플리케이션에서 정적리소스http://localhost:8080/context-path/static/css/app.css/src /main /webapp /static /html /css /js 기본서블릿과 DispatcherServlet의 공존서블릿 사양에서 루트 경로(/)에 매핑되는 서블릿을 기본 서블릿기본 서블릿을 통해 웹 애플리케이션의 문서 루트 이하의 파일에 접근 할 수 있음DispatcherServlet을 루트경로에 ..

Spring/MVC 2018.08.21

학습 // Spring // MVC // 공통처리

업데이트 :: 2018.08.21 공통처리서블릿 필터 이용DI 컨테이너에서 관리되는 빈 인젝션스프링에서 제공하는 서블릿 필터HandlerInterceptor@ContollerAdviceHandlerMethodArgumentResolver공통처리컨트롤러 핸들러 메서드 호출 전후에 공통 처리 실행 방법서블릿 필터 이용스프링 MVC(DispatcherServlet) 호출 전후에 공통된 처리javax.servlet.Filter 인터페이스서블릿필터 지원클래스GenericFilterBean서블릿 필터의 초기화 파라미터를 서블릿 필터 클래스의 프로퍼티에 바인드하는 기반 클래스OncePerRequestFilter같은 요청에 대해서 단 한번만 처리가 수행되는 것을 보장하는 기반 클래스GenericFilterBean를 상..

Spring/MVC 2018.08.21

학습 // Spring // MVC // Async

업데이트 :: 2018.08.21 비동기 요청비동기 활성화 설정비동기 처리 구현예외처리비동기 실행에 대한 공통처리비동기 요청비동기 실행이 종료된 후에 HTTP응답을 하는 패턴비동기 실행이 처리되는 중에 HTTP응답을 하는 패턴비동기 실행이 종료된 후에 HTTP응답을 하는 패턴부하가 커서 시간이 많이 걸리는 처리를 애플리케이션 서버가 관리하는 스레드에서 분리된 스레드에서 실행하게 만듬애플리케이션 서버를 더 효율적으로 동작하게 만듬실제로 HTTP응답은 비동기 처리가 완료된 후에 나오기 때문에 클라이언트 측에서 보면 동기 처리를 한 것처럼 보임스프링 MVC가 이와 같은 패턴을 처리하는 방법스프링 MVC의 스레드에서 비동기 처리를 하는 방법컨트롤러의 핸들러 매서드에서 Callable 타입을 반환WebAsyncT..

Spring/MVC 2018.08.21

학습 // Spring // MVC // FileUpload

업데이트 :: 2018.08.21 파일업로드구조파일 업로드 기능설정업로드 데이터 취득파일업로드서블릿 표준 업로드기능Apache Commons FileUpload 업로드기능구조업로드할 파일을 선택하고 업로드를 실행DispatcherServlet은 MultipartResolver 인터페이스의 메서드를 호출해서 멀티파트 요청을 해석MultipartResolver 구현클래스는 멀티파트 요청을 해석하고 업도르 데이터를 담을 MultipartFile 생성DispatcherServlet은 컨트롤러의 처리 메서드를 호출, MultipartFile 객체는 컨트롤러 인수나 폼객체에 바인드컨트롤러는 MultipartFile 객체의 메서드를 통해 업로드된 파일의 내용이나 메타 정보를 가져옴파일 업로드 기능설정파일 업로드 기능..

Spring/MVC 2018.08.21