분류 전체보기 64

레거시 전자정부 프레임 워크의 프로퍼티 값 관리

개요사실 요즘 전자정부 프레임워크의 프로퍼티 관리법은 잘 모르고..오늘 레거시 전자정부 프레임워크에서 프로퍼티 안의 값의관리법을 알아버려서 간단하게 쓰려고 한다.우리 회사는 3.10.0 버전을 쓰고있다.지금 회사에서 관리하는 전략전략이라고 거창하게 말할 거 까지는 없고 현재 회사에서는 사실 프로퍼티 관리를 안하고 있다!정확하게 말하면 관리하는 척 하고있었다. 실제 프로퍼티에 local, dev, prod라는 프로퍼티 파일은존재하고 있었기 때문이다. 프로퍼티가 있는 것 처럼 보였을 뿐이지 실제 값은 적용되고 있지 않았다.그렇지만 톰캣의 catalina.out을 보면 -Ddeploy.phase=prod 라는 배포 설정이 있는데, 이걸 보고당연히 관리한다는 착각을 불러 일으켰다. 근데 제일 중요한 '적용'은 ..

Spring 2025.04.17

Spring Session과 Spring Security가 협력하는 방법

개요처음에는 세션 관리에 대해 "스프링이 알아서 관리해주는 것" 정도로만 생각했다.하지만 회사에서 인증 서버와 게이트웨이를 직접 구현하게 되면서, 이 '단순하게' 는 나에게 크나큰 어려움으로 다가오게 되었다.이 글에서는 내가 직접 구현하면서 알게 된 스프링의 세션 관리 방식과, 스프링 세션(Spring Session)이 스프링 시큐리티(Spring Security)와 어떻게 협력하는지에 대해 정리해보려 한다.세션(Session)이란 뭘까?HTTP는 기본적으로 Stateless(상태 비저장) 프로토콜이다. Stateless란, 서버가 클라이언트의 상태를 기억하지 않는다는 뜻이다.즉, 클라이언트가 서버에 요청을 보낼 때마다, 서버 입장에서는 "얘가 누구였더라?" 를 알 수 없는 상태가 된다.그렇다면 매번 통..

Spring 2025.04.13

SpringBoot MultipartFile upload가 안되던 에러

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.web.multipart.MultipartException: Current request is not a multipart request] with root cause $http({ method: 'POST', url: Config.serverURL, data: formData, headers: { 'Content-Type': undefined } }). ContentType을 명시하지말라는 말은 있었는데, 이게 진짜 undefined로 명시적으로 지워버려야 되..

Spring/에러 2024.01.29

2023년 회고

한해를 돌아보는 행동은 정말 나를 하찮게 만드는거같다.. 하지만 그만큼 나를 돌아보게 된다. 작년에 했던 다짐들중에 제대로 지킨것이 있기나 한건지.. 1년은 또 왜이렇게 빠른걸까? 뭐 한것도 없다고 생각했는데 벌써 1년이 지나갔다. 이번에 이사를 하게 됐는데 !! 확실히 사람은 공간이 분리된 개념의 집에서 사는것이 좋은 것 같다. 1. 회사 생활 생각해보니 섹션 나누는게 이제 의미가 별로 없을수도 있겠다. 직장인이 되고나니 (더욱이 서비스회사가 아닌 si니까) 이벤트야 있지만서도 그걸 개발중에 이슈라고 봐야하는지? 아니면 단순한 새로운 개발인지? 새로운 개발이라고 한들 이걸 뭔가 행동으로써 전처럼 영역별로 나눌수가 있는가싶다 ㅎㅎㅎ.. 성수기 비수기로 나누자니 애매한 것 같고.. 아무튼 회사생활을 1년 ..

일상 2024.01.01

Void Type

스프링으로 개발을 하다보면, api response 객체에는 굳이 담을 것이 없지만 이 api가 성공적인 동작을 했다는것은 클라이언트에게 알려야할 수도 있다. 이럴때는 어떤식으로 만들어야 할까? 보통 API response를 그대로 쓰는 경우, 혹은 이것을 살짝만 매핑해서 쓰는 경우가 많을텐데 이럴때는 응답을 안 보낼수도 없고, 보내야만 한다. public ResponseEntity insertUser(Request request) { // ... if(request.id == null) return new ResponseEntity(HttpStatus.NO_CONTENT); // 오류 메시지도 같이 던지면 좋을거같다. return new ResponseEntity(HttpStatus.OK); } 이렇게..

Spring/개념 2023.12.28

알고리즘 문제해결 전략

문제를 읽고 이해한다. 문제를 익숙한 용어로 재정의한다. 어떻게 해결할지 계획을 세운다. 계획을 검증한다 프로그램으로 구현한다. 어떻게 풀었는지 돌아보고, 개선할 방법이 있는지 찾아본다. 체계적인 접근을 위한 질문들 비슷한 문제를 풀어본 적이 있던가? 단순한 방법에서 시작할 수 있을까? 내가 문제를 푸는 과정을 수식화할 수 있을까? 문제를 단순화 할 수 없을까? 그림으로 그려볼 수 있을까? 수식으로 표현할 수 있을까? 문제를 분해할 수 있을까? 뒤에서부터 생각해서 문제를 풀 수 있을까? 순서를 강제할 수 있을까? 특정 형태의 답만을 고려할 수 있을까? 좋은 코드를 짜기 위한 원칙 간결한 코드를 작성하기 적극적으로 코드를 재사용하기 표준 라이브러리 공부하기 항상 같은 형태로 프로그램을 작성하기 일관적이고 ..

코딩테스트 2023.12.18

SNMP TRAP

1. SNMP ㅇ 네트워크 장비 요소 간에 네트워크 관리 및 전송을 위한 프로토콜 - UDP / IP 상에서 동작하는 비교적 단순한 형태의 메시지 교환형 네트워크 관리 프로토콜 2. SNMP 특징 ㅇ 매우 단순하고 구현 용이 - 매우 간단(구조의 간단함, 구현의 용이함 등)하여 쉽게 관리 적용이 가능 ㅇ 정보 지향적 동작 구조 - 명령 지향적 보다는 정보 지향적 . 특정 정보 변수에 대한 단순한 요청/응답 메카니즘 (Get / Set) ㅇ Manager/Agent(관리자/대리인) 형태로 동작 ㅇ 여러 프로토콜과의 협동 - 크게, `정보 운반` 및 `관리 정보` 프로토콜을 분리함 3. SNMP 프레임워크 및 프로토콜 ㅇ SNMP 프레임워크 ㅇ `정보 운반` 프로토콜 - 수송용 프로토콜 : UDP (User..

카테고리 없음 2023.08.07

[모던 자바 인 액션] chap19. 함수형 프로그래밍 기법

내용 일급 시민, 고차원 함수, 커링, 부분 적용 영속 자료구조 자바 스트림을 일반화하는 게으른 평가와 게으른 리스트 패턴 매칭, 자바에서 패턴 매칭을 흉내 내는 방법 참조 투명성과 캐싱 1. 함수는 모든 곳에 존재한다 함수형 언어 프로그래밍이란 함수를 마치 일반값처럼 사용해서 인수로 전달하거나, 결과로 반환받거나, 자료 구조에 저장할 수 있음을 의미한다. 일반값처럼 취급할 수 있는 함수를 일급 함수라고 한다. 자바 8에서는 :: 연산자로 메서드 참조를 만들거나 (int x) -> x + 1 같은 람다 표현식으로 직접 함숫값을 표현해서 메서드를 함숫값으로 사용할 수 있다. Function shortToInt = Integer::parseInt; // 자바 8에서는 이렇게 메서드 참조로 Integer.pa..

Java 2023.04.06

[모던 자바 인 액션] chap18. 함수형 관점으로 생각하기

내용 왜 함수형 프로그래밍을 사용하는가? 함수형 프로그래밍은 어떻게 정의하는가? 선언형 프로그래밍과 참조 투명성 함수형 스타일의 자바 구현 가이드 라인 반복과 재귀 1. 시스템 구현과 유지보수 함수형 프로그래밍이 제공하는 부작용 없음과 불변성이라는 개념이 유지보수의 문제를 해결하는데 도움을 준다. 1. 공유된 가변 데이터 변수가 예상하지 못한 값을 갖는 이유는 결국 우리가 유지보수하는 시스템의 여러 메서드에서 공유된 가변 데이터 구조를 읽고 갱신하기 때문이다. 어떤 자료구조도 바꾸지 않는 시스템이 있다고 가정하자. 예상하지 못하게 자료구조의 값이 바뀔 일이 없으니 얼마나 유지보수하기 쉽겠는가! 자신을 포함하는 클래스의 상태 그리고 다른 객체의 상태를 바꾸지 않으며 return 문을 통해서만 자신의 결과를..

Java 2023.04.05

[모던 자바 인 액션] chap13. 디폴트 메서드

내용 디폴트 메서드란 무엇인가? 진화하는 API가 호환성을 유지하는 방법 디폴트 메서드의 활용 패턴 해결 규칙 전통적인 자바에서 인터페이스와 관련 메서드는 한 몸처럼 구성된다. 인터페이스를 구현하는 클래스는 인터페이스에서 정의하는 모든 메서드 구현을 제공하거나 아니면 슈퍼 클래스의 구현을 상속받아야 한다. 기존의 List 인터페이스를 구현했던 모든 프로그래머가 sort 메서드를 구현하도록 List 인터페이스를 상속ㄴ한 모든 클래스를 고쳐야 한다고 발표한다면 당황스러울 것이다. 하지만 걱정 할 필요 없다! 자바 8 에서는 이 문제를 해결하는 새로운 기능을 제공한다. 1. 변화하는 API 이미 릴리즈된 인터페이스를 고치면 어떤 문제가 발생하는지 살펴보자. 1. API 버전 1 public interface ..

Java 2023.03.30