Dev 133

[Spring] @Valid, @Validated 활용

@Valid 어노테이션을 활용한 유효성 검사 로직을 리팩토링 하면서 공부해보았다. 기존 소스도 파라미터 체크 로직을 이걸로 수정해서 반영해놓았다. 뿌듯하다 ㅎㅎ. 파볼수록 흥미로운 게 많아 정리한다. documents 읽기를 생활화하자! 1. Validator란? 스프링에서 도메인 객체를 검증할 수 있도록 제공하는 인터페이스. - Controller로 HTTP 요청을 @ModelAttribute 모델에 바인딩할 때 주로 사용된다. - Validator 인터페이스는 supports()와 validate() 메서드로 구성되어 있다. supports()는 이 검증기가 검증할 수 있는 오브젝트 타입인지 확인해주는 메서드, 이 메서드를 통과한 경우에만 validate()가 호출된다. validate()는 매개변수..

Dev/Spring 2020.07.15

[java] FilenameFilter, FileFilter

File class는 파일 내부의 리스트를 찾는 메소드를 세 개 갖고 있다. public String[] list( FilenameFilter filter ); 디렉토리의 파일목록을 String 배열로 반환 public File[] listFiles( FileFilter filter ); FileFilter 인스턴스에 구현된 조건에 맞는 File을 배열로 반환 public File[] listFiles( FilenameFilter filter ); FilenameFilter 인터페이스가 구현된 조건에 맞는 File을 배열로 반환 interface FileFilter와 FilenameFilter는 특정 파일이나 디렉토리를 필터링 하여 리스트를 추출할 필요가 있을 때 사용한다. 두개의 차이점은 정의된 메소드..

Dev/Java 2020.06.10

[java] jmeter 성능 테스트

서버 부하 테스트를 해야해서 jmeter를 처음 사용해 보았다. 내가 테스트한 것은 멀티스레드로 랜덤한 파라미터값으로 요청을 왕창 보내는 간단한 기능이었다. 이 내용을 또 까먹지 않기 위해 간략하게 정리한다. 에이징 테스트란? 컴퓨터 장치를 검사하는 방법의 한 가지. 컴퓨터 시스템과 컴퓨터를 구성하는 각각의 시스템이 한계 상황 속에서 견뎌 낼 수 있는가를 확인하기 위하여 사용되는 검사 방법. 예를 들어 하드 디스크의 내구성을 검사하기 위하여 하드 디스크에 대한 입출력 작업만을 7일 이상 쉬지 않고 계속해서 수행하는 방법이 이에 해당된다. 출처: Jmx 파일 Jmx 파일은 Jmeter 관련 설정 파일이다. JMX (Java Management Extensions)는 응용 프로그램(소프트웨어) / 객체 / ..

Dev/Java 2020.05.20

[Spring] EHCache

DB에서 조회하는 데 소요되는 리소스를 줄이고 이중화된 서버 간 분산 캐시된 내용을 공유 위해 EHCache를 사용했다. 관련 내용을 공부하고자 정리한다! Ehcache EHCache는 Spring Cache의 대표격으로 오픈 소스 기반의 Local Cache이다. Java 제네릭을 활용하고 캐시 상호 작용을 단순화하는 개선 된 API javax.cache API (JSR-107)와의 완벽한 호환성 (스프링 캐싱 및 최대 절전 모드 통합) 오프 힙 전용 캐시를 포함한 오프 힙 스토리지 기능 Disk, Memory 저장이 가능한 형태 MAVEN Dependency org.ehcache ehcache 3.8.1 XML configuration heap과 같은 환경 설정을 xml로 진행해도 되고 자바 코드로 ..

Dev/Spring 2020.05.06

[javascript] 콜백지옥을 탈출하는 q.js

Depth가 깊어지며 콜백 함수를 알아보기 힘든 피라미드 구조 . step1(function (value1) { step2(value1, function(value2) { step3(value2, function(value3) { step4(value3, function(value4) { // Do something with value4 }); }); }); }); q.js를 활용한다면 깔끔해지고 순차적인 비동기 처리를 가독성 높게 파악 가능하다. Q.fcall(promisedStep1) .then(promisedStep2) .then(promisedStep3) .then(promisedStep4) .then(function (value4) { // Do something with value4 }) .c..

Dev/JS & Jquery 2020.02.18

[Tomcat] catalina.sh 와 setenv.sh

스프링으로 외부 속성파일의 값을 @value 어노테이션으로 스프링 빈에 주입할 수 있다. 그런데 아무리 뒤져봐도 프로퍼티 파일에 관련된 내용이 없어 도대체 이 값이 어디서 가져오는 건지 찾아봤다. 알고보니 setenv.sh를 통해 설정한 값이었다. 톰캣 환경 설정에 대한 개념이 없어 정리한다. catalina.sh 톰캣의 catalina.sh 파일에는 다양한 설정이 존재한다. catalina.sh 파일에는 자바 옵션 설정 및 톰캣 로그 경로등 각종 설정을 저장할 수 있다. 이 때문에 설정 변경시 실수가 발생할 가능성이 높다.(유지보수에 큰 어려움 발생!). 만약 톰캣 버전이 업그레이드 되거나 서버 이전이 되는 경우 설정된 옵션을 반영하기 위해 조심히 추출해야한다. 그래서 추가 옵션을 설정하는 또다른 방법..

Dev/Web 2020.02.14

[effective-java] 동시성

[11장. 동시성] 스레드는 여러 활동을 동시에 수행할 수 있게 해준다. 단일 스레드 프로그래밍보다 동시성 프로그래밍은 어렵다. 공유중인 가변 데이터는 동기화해 사용하라 synchronized 키워드는 메소드나 블록을 한번에 한 스레드씩 수행하도록 보장한다. (=synchronized가 붙으면 단 하나의 스레드만 실행가능) 동기화는 배타적 실행뿐 아니라 스레드 사이의 안정적인 통신에 꼭 필요하다. Thread.stop은 사용하지 말자 쓰기와 읽기 모두가 동기화되지 않으면 동작을 보장하지 않는다. 이 문제들을 피하는 가장 좋은 방법은 가변 데이터를 공유하지 않는 것이다. (가변 데이터는 단일 스레드에서만 쓰도록 하자) 여러 스레드가 가변 데이터를 공유한다면 그 데이터를 읽고 쓰는 동작은 반드시 동기화해야 ..

Dev/Java 2020.01.15

[effective-java] 일반적인 프로그래밍 원칙

[9장. 일반적인 프로그래밍 원칙] 1. 지역변수의 범위를 최소화하라 - 지역변수의 범위를 줄이는 가장 강력한 기법은 가장 처음 쓰일 때 선언하기 지역번수의 범위는 선언된 지점부터 그 지점을 포함한 블록이 끝날 때 까지. - 거의 모든 지역변수는 선언과 동시에 초기화. try-catch문은 이 규칙에서 예외. 변수를 초기화하는 표현식이 검사예외를 던질 가능성이 있을 경우 try 블록안에서 초기화. 예외가 블록을 넘어 메소드까지 전파할 수 있으므로) 변수 값을 try 블록 바깥에서도 사용해야한다면 try 블록 앞에서 선언. 반복문에서는 반복변수의 범위가 반복문의 몸체 그리고 for 키워드와 몸체 사이의 괄호 안으로 제한된다. 반복 변수의 값을 반복문이 종료된 이후에 써야 하는 상황이 아니라면, while문..

Dev/Java 2020.01.14

[SpringBoot] 웹 애플리케이션 통합

1 비즈니스 레이어 개발 프레젠테이션 레이어(MVC) : 애플리케이션 사용자와의 커뮤니케이션 담당. 비즈니스 레이어(AOP, IoC) : 비즈니스 로직 처리. [비즈니스 컴포넌트 구조 이해하기] 프로젝트 생성 및 설정 pom.xml 4.0.0 org.springframework.boot spring-boot-starter-parent 2.2.2.RELEASE com.studyboot Chapter08 0.0.1-SNAPSHOT Chapter08 Demo project for Spring Boot 1.8 3.1.1 junit junit test org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-..

Dev/SpringBoot 2020.01.04
반응형