본문 바로가기

분류 전체보기102

디자인 패턴의 정의 및 종류 디자인 패턴이란? - 디자인 패턴은 소프트웨어를 설계하면서 발생하는 고질적인 문제에 대한 해결책이라고 보면 편하다. 이 해결책에는 여러개의 패턴을 정의하고 이 패턴들을 3가지의 큰 부류로 분류시켰다. 1. 디자인 패턴의 분류 - 생성(Creational) 패턴 객체 생성에 관련된 패턴으로 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공한다. - 구조(Structural) 패턴 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴 예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 객체들을 서로 묶어 새로운 기능을 제공하는 패턴이다. - 행위(Behavioral) 객체나 클래스 사이의 알고리즘이나 책임 .. 2021. 5. 29.
Validator 인터페이스 사용 Spring boot 프로젝트 만드는 과정에서 Validator를 한번 써보기 위해서 적용을 시켜봤습니다.. 보통 특정 객체에 대한 검증을 하기 위해서 사용된다. Validator 인터페이스를 사용하기 위해서는 2가지 메서드를 오버라이딩해서 사용합니다. @Override public boolean supports(Class clazz) { } @Override public void validate(Object target, Errors errors) { } supports -> 어떤 클래스의 객체의 검증을 지원할 것인지에 대한 코드를 작성해야한다. validate -> 매개변수 target의 객체에 대하여 검증을 실행 한 후 문제가 있을 경우 errors 를 통해서 확인합니다. 예시코드 @Setter @.. 2021. 5. 20.
Spring boot @ControllerAdvice 쉽게 말하자면 컨트롤러 계층에서 AOP를 적용시키기 위한 어노테이션이라고 할수 있을것 같다. 해당 어노테이션을 주로 사용하는 예시에는 예외처리에 대한 코드가 대부분 있다. 컨트롤러단 메서드들의 코드들을 좀 더 단순화 시키고 가독성이 좋게 하기 위한 목적으로 쓰이는 편이다. 이 어노테이션과 비슷한 어노테이션이 하나 존재한다 -> @RestControllerAdvice 보면 눈치 채셨겠지만 차이점은 Rest한 메서드들에 적용시킬지 아닐지에 대한 것 뿐이다. 우선 2가지 정도의 예외를 직접 간단히 만들어보았습니다.. public class NotEnoughStockException extends RuntimeException { public NotEnoughStockException() { super("해당 .. 2021. 5. 17.
@QueryProjection 으로 Querydsl 작성 개발환경 - Gradle - Spring Boot - Postgresql 페이징 용도로만 사용하는 것인 줄 알았지만 내 착각이였다. 최근에 면접을 보고 해당 회사에서 Querydsl을 위주로 사용해서 개발하신다는 말을 듣고 짧게나마 사용했던 Querydsl을 공부해보고자 이번 개인 프로젝트 진행하면서 사용을 해봤습니다.. @Configuration public class QuerydslConfiguration { @PersistenceContext private EntityManager entityManager; @Bean public JPAQueryFactory jpaQueryFactory() { return new JPAQueryFactory(entityManager); } } 구글에 검색해서보면 J.. 2021. 5. 11.
JPA) @Entitygraph JPA를 사용하다보면 N+1 문제를 자주 마주치게 되는데 그에 대한 해결방안 중 하나인 @EntityGraph 처음에 강사님에게 배울때는 3가지정도가 있다고 들었다. 1. Fetch join 2. @Entitygraph 3. @Query에 의한 작성 간단하게 사용방법 정도만 포스팅하겠습니다. @Builder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "order_item") @Getter @ToString(exclude = "item") @Entity public class OrderItem extends BaseEntity { @Id @GeneratedValue(strategy = Generat.. 2021. 5. 7.
AWS EC2 -bash: fork: Cannot allocate memory 며칠 전에 Amazon Linux2 를 이용해서 Spring Boot가 아닌 Spring, 즉 WAR파일을 배포할 떄 경로를 설정하는 포스팅을 한 적이 있다. 거기서 미리 설정하지 않으면 나타나는 에러가 바로 "-bash: fork: Cannot allocate memory" 이 에러입니다. 저한테 이 에러가 발생했던 상황은 이렇습니다. 1. 스왑(SWAP) 파티션 설정을 하지 않고 경로를 설정한 후 서버를 가동시켰다. 2. 내가 배포한 프로젝트 경로로 웹을 실행시켰다. 3. 이후 웹은 무한로딩에 걸리면서 EC2 서버가 마비된다. 4. EC2 서버를 껏다켜도 몇분동안 멈춰있는다.. 이러한 과정을 몇번 거쳐버려서 시간을 좀 소비했던 상태인데 해결방법은 SWAP 공간을 만드는 것이였습니다. 우선 사진을 통해.. 2021. 4. 24.