분류 전체보기154 자바에서 소문자+대문자 시작 필드의 getter 방법 몇 달 전, 레거시 모듈에서 uName, eMail 같은 필드명 때문에 꽤 오래 헤맸어. 직렬화는 잘 되는데 바인딩이 어긋나고, 테스트에선 되는데 실서버에선 안 먹히는 기묘한 상황. 결국 원인은 자바에서 소문자+대문자 시작 필드의 getter 방법을 팀마다 제각각으로 쓴 탓이더라. 그때 정리한 노트를 경험담 형식으로 풀어볼게.1. 왜 문제였나1-1. 증상 정리동일한 DTO가 로컬에선 잘 동작하는데 운영에선 uName만 null. 로그를 보니 바인더가 속성 이름을 다르게 인식하고 있었다.1-2. 환경(스프링/직렬화) 맥락스프링 MVC 바인딩 + Jackson 직렬화 조합. 접근 방식은 프로퍼티(getter) 기반이었다고....1-3. 레거시 네이밍레거시 스키마를 맞추려다 보니 uName, eMail 같은 .. 2025. 11. 16. MariaDB 컬럼 길이 조회 최근에 MariaDB 컬럼 길이 조회만 하루에도 몇 번씩 찾게 되더라. 문서/데이터 이관하다 보면 “정의된 길이”랑 “실제 들어간 데이터의 길이(문자/바이트)” 둘 다 알아야 해서, 내가 쓰는 쿼리와 팁을 예제로 정리해놓음.왜 길이를 나눠 보냐 (정의/문자/바이트)스키마에 선언된 길이(예: VARCHAR(255))는 “허용 최대 문자 수”이다. 반면 “실제 데이터”는 레코드별로 CHAR_LENGTH()(문자 수) 또는 OCTET_LENGTH()(바이트 수)로 측정해. 멀티바이트(예: utf8mb4)면 “문자 수”와 “바이트 수”가 다를 수 있어서 둘 다 보관해두면 마이그레이션/인덱스 설계할 때 사고를 줄일 수 있음. 문서상 OCTET_LENGTH()는 바이트 기준 길이를 돌려주고, 기본 모드에선 LENG.. 2025. 11. 14. java.lang.ClassCastException 오늘 배포 직전에 java.lang.ClassCastException: kr.co.aaaa.vo.userVO cannot be cast to java.util.Map 이런 오류가 발생하더라. 빨리 배포해야하는데 눈앞이 아찔... 다행히 금방 수정해서 오류없이 배포완료!1. 에러 요약 & 재현 코드이 에러는 말 그대로 userVO라는 객체를 java.util.Map으로 캐스팅하려다가 실패한 거야. java.lang.ClassCastException: kr.co.aaaa.vo.userVO cannot be cast to java.util.Map 처럼 정확히 찍히고, 보통은 컨트롤러에서 응답 만들 때나, 서비스에서 레거시 유틸을 부를 때, 또는 MyBatis에서 결과를 Map으로 받는다고 착각했을 때 오류발생.. 2025. 11. 12. Error creating bean with name 'LocalValidatorFactoryBean#0' — Unable to create a Configuration 해결 오늘 이슈가 Error creating bean with name 'LocalValidatorFactoryBean#0' — Unable to create a Configuration 라는 이름값 그대로였어.결론은 Bean Validation 구현체(Hibernate Validator)가 없거나, javax ↔ jakarta 전환이 꼬였을 때 딱 등장하더라.아래는 내가 일하면서 느낀 점을 토대로, Error creating bean with name 'LocalValidatorFactoryBean#0' — Unable to create a Configuration 문제를 정리한 해결 루트다.증상: LocalValidatorFactoryBean 초기화 실패컨텍스트 초기화에서 org.springframewor.. 2025. 11. 7. @org.apache.commons.lang3.StringUtils@isNotBlank({변수}) 오늘 일하다가 레거시 화면에서 @org.apache.commons.lang3.StringUtils@isNotBlank({변수}) 이렇게 써놓은 걸 보고 잠깐 멈칫했어. 예전에 Struts2로 만든 페이지들에서 자주 보던 OGNL 문법인데, 막상 까먹기 쉬운거라 찾아본거랑 경험담임@org.apache.commons.lang3.StringUtils@isNotBlank({변수})란?@org.apache.commons.lang3.StringUtils@isNotBlank({변수})는 OGNL 문법이야. @풀패키지.클래스명@정적메서드(인자) 형태로 정적 메서드를 호출해. Struts2의 JSP/태그에서 조건식 쓸 때 흔히 보이는 패턴으로 Apache Commons Lang의 StringUtils.isNotBlank.. 2025. 11. 5. j_spring_security_check 사용법 오늘은 예전 프로젝트에서 흔히 보던 j_spring_security_check가 정확히 뭐였는지, 그리고 지금 Spring Security에서는 어떻게 대체되는지 정리해봤어. 팀 코드 리팩토링하면서 직접 겪은 시행착오 + 공식 문서를 다시 훑어본 내용을 섞은 정리라 실전에서 바로 써먹기 좋게 정리함.한눈에 정리과거: 폼 로그인의 기본 처리 URL이 /j_spring_security_check, 파라미터가 j_username/j_password였어.현재(3.2 이후, 최신 6.x 포함): 기본 처리 URL은 /login (POST), 파라미터는 username/password로 바뀌었어. 즉, j_spring_security_check는 기본값이 아니야.원하면 loginProcessingUrl("/j_sp.. 2025. 11. 1. 이전 1 2 3 4 ··· 26 다음