applicationContext 초기화(refresh) 이전에 작업이 필요할 경우 ApplicationContextInitializer initialize 메소드에 구현하여 사용 public class XXInitializer implements ApplicationContextInitializer { @Override public void initialize(ConfigurableApplicationContext){ //로직 구현 } } web.xml contextInitializerClasses XXInitializer
What? ORA-01401 : 열에 입력한 값이 너무 큽니다. INSERT 나 UPDATE 쿼리문에서 발생할 에러가 SELECT 문에서 발생. Why? 서브쿼리문에서 데이터를 가공하는 부분에 LISTAGG 함수를 사용. LISTAGG 함수는 컬럼타입이 NVARCHAR2 이면 한글이 깨질 수 있는데 VARCHAR 로 캐스팅해서 사용. 컬럼 캐스팅할 때 사이즈가 컬럼 사이즈보다 작으면 ORA-01401 발생! SELECT LISTAGG(CAST(tab.col AS VARCHAR(100)), ',') FROM TABLE tabL GROUP BY some_column
What? 4000bytes 넘는 값을 mybatis 에 바인딩할 때 SUBSTR() 사용 시 ora-01461 발생. 테이블 컬럼이 CLOB 이라도 에러 발생. INSERT SELECT 문에서도 에러 발생. INSERT INTO TEST_TABLE SELECT SUBSTR(#{INPUT}, 4000) /* ORA-01461 Error */ FROM DUAL;Why? Oracle 에서 VARCHAR2 최대 크기는 4000bytes. SUBSTR() 에 입력 값이 String 타입으로 변환되어 4000bytes 이상이면 에러 발생. Solution Java 에서 입력 값을 substr() 처리 후에 mybatis SQL에서는 바인딩만 처리. INSERT VALUE 문으로 변경. INSERT INTO TES..
동적으로 추가된 HTML 태그에도 영향 &(document).off();
람다식 함수형 프로그래밍을 구현하는 방식 클래스를 생성하지 않고 함수의 호출만으로 기능 수행 변수처럼 사용 (자료형 기반, 매개변수로 전달, 메서드의 반환값) 이름이 없는 함수 (Anonymous Function) () -> {}//파라미터가 없으며 void를 반환 () -> "Text"//파라미터가 없으며 문자열을 반환 () -> {return "Text";}//파라미터가 없으며 문자열을 반환 (Integer i) -> {return "Text" + i;}//파라미터가 있으며 문자열을 반환 (List list) -> list.isEmpty()//불리언 표현식 () -> new Apple(10)//객체 생성 (Apple a) -> { System.out.println(a.getWeight());//객체에..
Temlpate Method 추상 메서드나 구현된 메서드를 활용하여 전체의 흐름(시나리오)를 정의해 놓은 메서드 final로 선언하여 재정의 할 수 없게 함Template Method Pattern 디자인 패턴의 일종 프레임워크에서 많이 사용되는 설계 패턴 추상클래스로 선언된 상의 클래스에서 추상메서드를 이용하여 전체 구현의 흐름을 정의하고 구체적인 각 메서드 구현은 하위 클래스에 위임 하위 클래스가 다른 구현을 해도 템플릿 메서드에 시나리오 대로 수행됨 public abstract class Car{ public abstract void drive(); //하위 클래스에서 구현 public abstract void stop(); public void start(){ //공통 로직 System.out.p..
Client에서 Server로 데이터를 전송할 때 HTTP Request Headers에 content-type 설정에 따라 HTTP Request Message Body 데이터 포멧이 달라지기 때문에 Server에서 데이터 수신 방식이 달라짐 application/x-www-form-urlencoded HTML form, .ajax 요청 헤더에 default content-type 값 key=value 포멧 Server Side 서블릿에서 Request Body를 Map 형태로 변환 Controller에서 @RequestParam, request.getParameter("param"), @ModelAttribute Command 객체 바인딩 가능 application/json {"key" : "valu..