전체 글(10)
-
헤드퍼스트 디자인패턴 - 전략 패턴
1. 디자인 패턴 소개와 전략 패턴전략패턴을 사용하기 전에는 ?1. 상속을 이용해서 코드를 작성상속을 이용했을 때의 단점서브클래스에서 코드가 중복된다.실행 시에 특징을 바꾸기 힘들다.모든 서브클래스의 행동을 알기 힘들다.코드를 변경했을 때 다른 클래스들에게 원치 않은 영향을 끼칠 수 있다.2. 인터페이스를 이용해서 코드를 작성인터페이스를 이용했을 때의 단점코드를 재사용하지 않으므로 코드 관리에 문제가 생긴다.행동을 변경할 때마다 행동을 구현한 서브클래스들을 전부 찾아서 일일이 고쳐야 한다.3. 캡슐화를 이용해서 코드를 작성2번에서는 행동을 인터페이스로 표현하고 직접 구현했었지만, 행동 인터페이스를 구현한 행동 클래스를 만들고 그것을 사용한다.재사용과 쉬운 변경 가능해당 기능을 직접 구현하지 않고 행동 클..
2024.12.07 -
Object - 객체, 설계
1장. 객체, 설계변경에 취약한 코드의존성은 변경에 대한 영향을 암시하며, 어떤 객체가 변경될 때 그 객체에 의존하는 다른 객체도 함께 변경될 가능성을 내포한다.객체 사이의 의존성이 과도한 경우를 "결합도가 높다"고 한다.설계의 목표:객체 사이의 결합도를 낮춰 변경에 유연한 설계를 만드는 것캡슐화와 응집도캡슐화객체 내부의 세부적인 사항을 감추는 것객체 내부로의 접근을 제한하면 결합도를 낮춰 설계를 쉽게 변경할 수 있다.응집도밀접하게 연관된 작업만 수행하고, 연관성 없는 작업은 다른 객체로 위임하는 객체를 가리켜 "응집도가 높다"고 한다.자신의 데이터를 스스로 처리하는 자율적인 객체는결합도를 낮추고,응집도를 높인다.절차지향과 객체지향절차적 프로그래밍프로세스와 데이터를 별도의 모듈에 위치시킴객체지향 프로그래..
2024.12.06 -
Entity 클래스에서 자주 사용하는 어노테이션
@NoArgsConstructor(access = AccessLevel.PROTECTED)JPA는 리플렉션을 통해 엔티티를 생성할 때 기본 생성자가 필요하지만, 일반적으로 직접 사용하지 않도록 접근제한자를 protected 또는 private 으로 설정한다.리플렉션이란 ?구체적인 Class Type을 알지 못하더라도 해당 Class의 method, type, variable들에 접근할 수 있도록 해주는 자바 API이며, 컴파일된 바이트 코드를 통해 Runtime에 동적으로 특정 Class의 정보를 추출할 수 있는 프로그래밍 기법이다.리플렉션을 이용하여 객체의 필드값을 동적으로 읽어와서 JSON으로 직렬화 할 수 있다.@GeneratedValue(strategy = GenerationType.IDENTIT..
2024.09.08 -
스프링 3 이상 Multipart Config 설정
포스트맨에서는 파일 업로드가 잘 되는데, 클라이언트 측에서 access-control-allow-credentials 이 뜬다고 해서MultipartFile 에 대한 설정을 따로 해줘야 하나 검색했다. 스프링 3 이상부터는 Multipart 처리를 위해 별도의 config 파일을 만들어줘야했던 것 ! import jakarta.servlet.MultipartConfigElement;import org.springframework.boot.web.servlet.MultipartConfigFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;impor..
2024.07.30 -
Java Mail Sender 예외처리 - 잘못된 주소로 메일 보내기?
회원가입시 이메일주소로 인증메일을 보내는 기능의 다양한 예외처리를 진행하다가 세상에 존재하지 않는 이메일로 메일을 보내면 어떻게 되는지 처리를 안한 것 같아서 한번 시도해봤다. 결론부터 말하자면, 불가능하다 ^^ 메일 보내는 코드를 try 안에 넣고 catch하면 되겠지 ~ 하는 생각으로내가 시도해본 try catch 문AddressExceptionSendFailedExceptionMessagingExceptionMailExceptionExceptionSocketException정말 놀랍게도 모두 다 .. 안된다. 검색해보니 java mail sender는 잘못된 주소로 이메일을 보내는 과정에서 예외를 처리하지 않는다고 한다.그래서 발신인 메일함에 들어가서 확인해보니 … 주소가 존재하지 않아도 계속해..
2024.07.28 -
Spring Security JWTFilter에서 Exception 처리하기
JWT 토큰 로그인을 구현하다가, JWT Filter에서 토큰 관련하여 잘못된 요청이 들어오면CustomException을 던지는 방식으로 코드를 작성했는데 아무리해도 Exception 처리가 안되는 것 같았다. 찾아보니 Spring Security 에서는 기존에 사용하던 Custom Exception 을 처리하지 못한다고 한다. 그 이유는Filter는 Dispatcher Servlet보다 앞단에 존재하고 Handler Interceptor는 뒷단에 존재하기 때문에Filter에서 보낸 예외는 Exception Handler로 처리를 못한다. -> 설정을 따로 해줘야 한다 ! @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws..
2024.07.28