Springframework30 [java] list의 null 체크(ObjectUtils.isEmpty()) NPE 😂NPE(NullPointerException)는 java 개발하다 보면 정말 많이 만나는 에러 중 하나이고Null값인 대상을 가지고 뭔가 하려고 하면 발생하는 에러다.방지법은 공통모듈을 만들어 항상 null 체크를 하게끔 개발하는게 삽질을 줄이는 길일 듯 싶다.아래와 같은 상황에서 NPE가 발생한다.userList에 아무것도 할당되지 않은 상태인데 사이즈를 측정하려고 하다니?(미친건가?)List userList = null;log.info("userList => {}", userList.size()); 스프링으로 개발 시 보통 데이터를 list에 담아 화면에 뿌리거나 API 형식으로 클라이언트에 내리거나 할텐데list가 null이거나 빈값이 담기거나 사이즈가 0인 경우 등등 다양한 조건에 따라.. 💻 it/development 2025. 12. 10. [springBoot] 엑셀파일 읽기(feat. ajax) 프로세스: 화면에서 엑셀 업로드 시 엑셀의 내용을 읽어서 테이블에 저장의존성 추가(gradle)//springBoot ver: 2.7.7//poi 의존성 추가implementation 'org.apache.poi:poi:5.1.0'implementation 'org.apache.poi:poi-ooxml:5.1.0'service@Service@Slf4j@RequiredArgsConstructor@Transactional(readOnly = true)public class ExcelService { private final ExcelMapper excelMapper; /** * 엑셀업로드 화면 * @param mv * @return */ @Override publ.. 💻 it/development 2025. 11. 18. [springBoot] 인터셉터를 통해 메뉴 접근 관리 시스템에서는 보안 때문에 로그인한 사용자의 메뉴 접근 범위를 제한해야 한다.예를 들어 시스템관리자는 시스템관리 메뉴만 접근할 수 있어야 하고 급여관리자는 급여메뉴에만 접근할 수 있어야 한다.인터셉터를 통해 아래처럼 구현했다.package kr.dev.common.interceptor;import kr.dev.cmmn.mapper.CmmnMapper;import kr.dev.cmmn.model.MenuVo;import kr.dev.cmmn.service.CmmnService;import kr.dev.user.model.EmpVO;import kr.dev.user.service.UserService;import lombok.extern.slf4j.Slf4j;import org.springframework.b.. 💻 it/development 2025. 11. 16. [Rest API]계층구조 Rest API sample(feat. springBoot) Oracle의 HR schema의 데이터로 계층구조로 Rest API를 만들 수 있다.Rest API 연습 하기 좋다.depthentity비고1depthregion지역2depthcontry나라3depthlocation위치4depthdepartment부서5depthemployee사원최상위에 지역(유럽, 아메리카, 아시아 등)이 있고 그안에 나라가 있고 그 아래 5depth까지 구성할 수 있다.위 데이터 구조를 기반으로 작성을 해 보면 아래처럼 작성 할 수 있다.(로직은 개인의 취향)RestController 😎package study.dev.test.controller;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;impor.. 💻 it/development 2025. 11. 16. [springBoot] springBoot 실행 시 dataSource 제외 springBoot 실행 시 DB 연결을 기대하는데 DB연결이 필요없는 기능을 만들 때는 이조차도 귀찮다.그럴 때 아래처럼 메인 메소드의 @SpringBootApplication에 exclude 옵션을 주면 된다.package study.springaoptest1;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;@SpringBootApplication(exclude = {DataSourceAutoConfi.. 💻 it/development 2025. 11. 16. [springBoot] Spring AOP simple source RestController 😄package study.springaoptest.web;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.annotation.*;import study.springaoptest.model.User;import study.springaoptest.service.TestService;@RestController@Slf4j@RequestMapping("/api/v1/user")@RequiredArgsConstructorpublic class TestRestController { private final TestService testS.. 💻 it/development 2025. 11. 16. [springBoot] springBoot,java version downgrade springBoot 초기화 할 때 언제부터인지는 모르겠으나 java버전이 17이 가장 min version이 되었다.(이 컴퓨터만 이런건지는 모르겠다.)만들 애플리케이션은 spring batch 4버전이기에 프로젝트를 java 17버전으로 만든 후 다운그레이드 했다.포스팅 할까 말까 하다가 사소한 것도 메모하자는 주의라 메모한다.build.gradle파일의 변경한 부분은 아래와 같다.버전 수정 후 다운그레이드한 버전에 맞게 의존성 추가해야 한다.gradle plugin 버전 수정 후 환경설정, 프로젝트 구조의 jdk도 변경해야 한다.이렇게 수정 후 다운그레이드한 버전에 맞게 의존성이 추가되었는지 확인하면 된다.개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.틀린 점 있을 경우 댓글 부탁.. 💻 it/development 2025. 11. 16. [spring] egovframework(4.1 ver) 단순 메일 발송 pom.xml org.apache.commons commons-email 1.5 egovframework.com.ems sndng-mail 1.0context-mail.xml true true true SndngMailVOpackage egovframework.test.com.cop.ems.dto;import lombok.Data;@Datapublic class SndngMailVO { /** 메세지ID */ private String mssageId; /** 발신자 */ private.. 💻 it/development 2025. 11. 15. [IDE] IntelliJ Spring MVC Project import (feat. maven) 최근 IntelliJ에서 추억의 spring MVC project를 import할 일이 있어 삽질 끝에 성공해서 이를 기록한다.빌드 툴은 maven이었다.우선 경험을 토대로 얘기하면 maven 프로젝트에서 필요한 건 src, pom.xml 2개만 있으면 된다.인텔리제이 실행 후 New > Project from Existing Sources 선택 후 가져올 프로젝트 선택Import Project에서는 Eclipse 선택된 상태로 그대로 Next(Maven 선택이 아니다.)프로젝트이름과 경로 확인 후 NextNext로 넘어가고 SDK 선택하는 창에서 사용할 SDK 선택 후 NextCreate를 누른다.(버전에 따라 명칭은 다를 수 있음)그리고 버전에 따라 다를 수 있는데 인텔리제이의 이벤트 로그 혹은 No.. 💻 it/development 2025. 11. 15. [spring] spring excel download (feat. 체크박스) 화면에서 사용자가 체크한 row의 데이터들만 서버로 보내서 엑셀 다운로드 창을 브라우저에게 띄우게 하고 엑셀 다운로드 하는 로직 springBoot 2.7.7, jdk 11 version view 엑셀 다운로드 예제 목록 체크박스 순번 사원명 직업 .. 💻 it/development 2025. 11. 15. [spring] spring excel download 모듈화 ver 1 아래 포스팅에서 이어진 내용입니다. [spring] spring excel download (feat. 체크박스)목차 화면에서 사용자가 체크한 row의 데이터들만 서버로 보내서 엑셀 다운로드 창을 브라우저에게 띄우게 하고 엑셀 다운로드 하는 로직 springBoot 2.7.7, jdk 11 version view 엑셀 다운로드 예제 목록yaga.tistory.com프로젝트 팀원들이 내가 만든 엑셀 모듈을 그냥 화면에서 호출만 하고 나머지는 신경쓰게 하고 싶지 않았다.호출하는 쪽에서는 모듈이 어떻게 작동하는지 모르게 만드는 것, 나는 알맞은 조건으로 호출만 하면 되는 것그래서 고민 끝에 일단 무식하게 아래와 같이 구현했다.(보완 사항이 많은 소스임)화면에서는 공통 엑셀 컨트롤러의 url 호출 시 매개변수(.. 💻 it/development 2025. 11. 15. [spring] spring excel download 모듈화 ver 2 아래 포스팅에서 이어진 내용입니다. [spring] spring excel download (feat. 공통으로 분리)목차 아래 포스팅에서 이어진 내용입니다. [spring] spring excel download (feat. 체크박스) 목차 화면에서 사용자가 체크한 row의 데이터들만 서버로 보내서 엑셀 다운로드 창을 브라우저에게 띄우게 하yaga.tistory.com모듈화 ver 1에서는 화면이 늘어나고 구분자가 늘어남에 따라 ExcelUtil의 static method가 길어진다는 단점이 있어서 불편했다.그래서 더 고민 끝에 구분자에 따른 시트명, 파일명, 헤더정보를 별도의 파일로 빼기로 했다.이렇게 되면 파일에 내용만 추가하면 되고 소스는 건드릴 필요가 없게된다.pages.json(시트명, 파일명.. 💻 it/development 2025. 11. 15. 이전 1 2 3 다음