본문 바로가기
[java] 메소드 안에서 제어문 없는 중괄호 {} 의 쓰임 메소드 안에서 다음과 같이 쌩뚱맞은 중괄호 블락이 보인다면, 이는 변수의 유효 범위(scope)를 제한하기 위함이다. 1 2 3 4 5 6 7 8 9 public void methodA(){ { int a = 0; } int a = 2; return b; } cs 3번째 라인의 a 변수는 { } 안에서만 유효한 지역변수이며, 위와 같이 a 변수를 6번라인에서 선언해도 문제 되지 않는다. * 변수 유효범위를 제한하여 코딩할 때 사용하나, 드물게 사용된다. 2020. 9. 7.
[mybatis] xml에서 java method 사용 AND searchVal = #{param} @classpath@method(param) 과 같이 사용이 가능 보안상 쓸일은 없겠지만 아래와 같이 사용도 가능 SELECT '${@com.test.Utils@isEmpty(param)}' FROM DAUL 2020. 8. 24.
URL 직접 접근 막기 : referer 헤더정보 사용 URL에 직접 접근할 수 없도록 처리 : header 에서 referer 정보를 확인하여 직접 접근 여부 판별이 가능하다. referer 는 변조가 가능하여 직접 접근을 완벽히 막는 방법이라고 할 순 없을 듯 하나, 보통은 이정도만 처리해도 될 듯 하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String .. 2020. 8. 12.
[Maven] Maven Build 시 test 건너뛰기 (test skip) Maven Build 시 test 건너뛰기 Maven Build (install) 시 Maven Test 이후에 Build를 하게 된다. 이때 jUnit 테스트 에서 Exception 발생 및 Assert not Equal 등으로 Test가 실패할 경우 Build 는 실패 (Fail) 하게 된다. jUnit Test 가 실패해도 Build 는 되게끔 Maven Test 단계를 건너뛰는 방법은 아래와 같다. 1. CMD 에서 빌드시 mvn install -DskipTests 2. IDE Run configurations 에서 빌드시 1. Goals 에 다음과 같이 옵션 부여 : install -DskipTests 2. Skip Tests 체크박스 체크 후 run 3. pom 수정 : surefire plu.. 2020. 5. 10.
[Spring Fw] inter-bean reference vs. Bean Lite Mode : @Configuration 어노테이션 없이 @Bean 사용 1. Inter-bean reference @Configuration 과 함께 @Bean 을 사용 하는 경우. cglib proxy 에 의해 생성된 proxy 객체를 사용. @Bean 은 하나만 생성된다. 일반적인 경우 위 방법을 사용한다. 2. Lite Mode @Configuration 없이 @Component 등의 annotation과 @Bean을 같이 사용. cglib proxy 에 의한 객체를 사용하지 않고 일반 메소드 처럼 동작하게 된다. @Bean 이 여러개 생성 될 수 있다. Lite Mode를 언제 사용하는지 모르겠다. 알아만 두자. 한글 설명 : https://multifrontgarden.tistory.com/253 공식 doc : https://docs.spring.io/spring.. 2020. 5. 9.
[Spring Fw] application context vs. servlet context application context 최상위 context 여러개의 servlet 에서 공통적으로 공유하여 사용할 수 있는 Bean 을 선언 Spring 에서 생성되는 Bean 에 대한 Ioc Container application context 에 정의된 bean 은 servlet context에 정의된 bean 을 사용할 수 없다 servlet context servlet 관련된 context url 관련 설정 bean 생성 (intercepter, @Controller) application context 를 부모 context 로 사용 application context와 servlet context에 같은 id 로 bean 등록된 경우 servlet context 의 bean을 사용한다. * 빈 .. 2020. 5. 7.
[Java] Stream 스트림 문법 정리 자바 8부터 람다와 함께 사용되는 스트림. 아직 자바 8 환경에서 개발해 볼 경험이 없었지만 정리를 미리 해둔다. 스트림은 아래와 같은 파이프라인으로 작성한다. 객체집합.스트림생성().중개연산().최종연산() 1. 스트림 생성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 private static void construct() { //1. Collection으로 스트림 생성 //collection.stream(); List names = Arrays.asList("pyo", "sue"); names.stream(); //2. 배열로 스트림 생성 //array.stream(); int[] arr = {1, 2, 3}; Arrays.stream(arr); //3. 스트림 직접 생성 //S.. 2020. 4. 29.
[Spring Batch+Quartz] 스프링 배치, 쿼츠 메타테이블 들여다보기 Spring Batch, Spring Quartz 메타테이블 들여다보기 Spring Batch, Spring Quartz 모두 InMemory 방식을 사용할 경우 Table 없이 사용가능하다. 하지만 Quartz Clustering 기능을 사용하는 경우 혹은 UI 로 배치(job) 및 스케쥴을 관리하는 경우 메타테이블 사용은 필수적이다. Quartz , Batch 메타테이블 중 의미있는(내가 알고 있는..) 테이블 정보를 기록해둔다. 1. Quartz 메타테이블 1) FIRED_TRIGGERS; 현재 실행된(fired) 스케쥴의 트리거정보(비동기 동작시 바로 실행완료 상태가 되어버리므로 해당 테이블은 스쳐지나감) 2) PAUSED_TRIGGER_GRPS; 3) LOCKS; 4) SIMPLE_TRIGGER.. 2020. 4. 21.
[Spring Batch+Quartz] 스프링 배치+쿼츠 설정 및 구현 Clustering 모드 사용 1. Quartz 와 Batch 1-1. Quartz - 언제 실행시킬지와 관련 - Scheduling 1-2. Batch - 무엇을 실행시킬지와 관련 - Batch job - 보통 배치를 짠다는 말은 Batch job 개발을 한다는 의미 2. Quartz와 Batch의 관계 및 함께 사용하는 이유 일괄처리(로직)을 batch job 으로, batch job 을 스케쥴링 하기 위해 quartz 를 사용 높은 Spring Version은 @Scheduled 어노테이션으로 Crontrigger와 같은 기능을 제공하여 Quartz 가 필요 없다곤 하나 Quartz 의 Clustering 기능, DB 값을 기준으로 동작 제어가 가능하다는 점에 Quartz를 함께 사용 3. Quartz Clustering + B.. 2020. 4. 20.
@Transactional Propagation (전파속성), Isolation (격리수준레벨) 그리고 synchronized 1. Transaction 설정방법 트랜잭션 설정 방법은 이곳을 참고. 2. Isolation SQL 의 Isolation level 과 동일하게 동작 (SQL 격리수준 속성에 대한 자세한 내용은 이곳을 참고) - READ_UNCOMMITED : commit 되지 않은 데이터를 읽는다 - READ_COMMITED : commit 된 데이터만 읽는다 - REPEATABLE_READ : 자신의 트랜잭션이 생성되기 이전의 트랜잭션(낮은 번호의 트랜잭션)의 커밋된 데이터만 읽는다 - SERIALIZABLE : LOCK 을 걸고 사용 - DEFAULT : 사용하는 DB 기본 설정을 따른다. (Oracle 은 READ_COMMITED, Mysql InnoDB 는 REPEATABLE_READ 가 Default) 3... 2020. 4. 17.