spring(7)
-
[Spring] @Constraint로 커스텀 벨리데이션 만들기
1. @Constraint 해당 어노테이션을 사용하면, 사용자가 원하는 Constraint와 Validation을 만들어 이를 적용할수있다. 도메인 모델에서 부여되는 제약조건을 생성하기 위해 쓰인다. 2. 예시 @Constraint(validatedBy = GenderValidator.class) @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface ValidGender { String message() default "올바른 성별을 입력해주세요"; Class[] groups() default {}; Class
2022.12.07 -
[Spring] AOP @AfterReturing 사용해보기
- Advice는 실질적으로 프록시에서 수행하게 되는 로직을 정의하게 되는 곳입니다. 스프링에서는 Advice에 관련된 5가지 애노테이션을 제공합니다. 어노테이션은 메서드에 붙이게 되는데 해당 메서드는 advice의 로직을 정의하게 되고, 어노테이션의 종류에 따라 포인트컷에 지정된 대상 메서드에서 Advice가 실행되는 시점 을 정할 수 있습니다. 또한 속성값으로 Pointcut을 지정 할 수 있습니다. @AfterReturning 조인 포인트가 정상 완료 후 실행(실제 target 메서드 수행 완료 후 실행) 반환값 자체는 조작 불가능 반환값 내부에 setter같은 수정자가 있따면 내부값은 수정 가능 @AfterReturing은 조인 포인트가 정상적으로 실행되고 값을 반환할 때 실행됩니다.(타겟 메서드..
2022.10.26 -
[Spring] Annotation의 원리와 Custom Annotation 만들기
1. Spring @Component 어노테이션 스프링에서 Bean을 등록하는 방법은 다양하지만, 그중 @Component 어노테이션을 이용하는 방법이 있습니다. @Component 어노테이션을 참조해서 들어가보면 4개의 어노테이션을 갖고있는걸 볼 수 있습니다. J2SE 5.0 부터 어노테이션을 작성할 때 주로 java.lang.annotation 패키지에 있는 4가지 어노테이션을 이용하여 작성합니다. @Target : 어노테이션을 작성 할 곳입니다. default 값은 모든 대상 ElementType.TYPE ( class, interface, enum) : 클래스, 인터페이스, 열거타임 ElementType.FIELD (instance variable) : 필드 ElementType.METHOD : ..
2022.09.05 -
[Spring Cloud] Kafka를 이용해 Config Bus 적용하기
1. Spring Cloud Bus는 왜 필요한가? - 평소 Spring Cloud Config 만 적용했을 경우 설정 정보가 변경될 경우 변경된 마이크로서비스에서 /actuator/refresh 를 호출해서 변경을 했었다. - 하지만, 이렇게 하면 매번 설정 정보가 변경 될 때마다 엔드포인트를 호출해 변경정보를 반영하는게 굉장히 번거로운 일이다. 이러한 문제를 해결하기위해서 클라이언트에서 Spring Cloud Bus와 Queue를 이용하여 설정 정보를 한번에 변경하는 것이 Spring Cloud Bus 이다. - 나는 현재 회사에서 Kafka를 주로 사용하고 있으므로, 메세지큐는 Kafka를 이용하여 구현해 보았다. - 선호도나 프로젝트 성향에 따라 RabbitMQ나 Kakfa 등 선택을 하면 될 거..
2022.08.29 -
[Kafka] 스프링부트에 Kafka 적용해보기
스프링 프로젝트 생성하기 - Dependencies에 우선 Kafka, Spring Web, Mysql, Lombok, JPA(없어도 무방은 할 것 같으나 추후 추가 테스트를 위해) 를 추가했다. server.address=localhost server.port=8080 # API 호출시, SQL 문을 콘솔에 출력한다. spring.jpa.show-sql=true # DDL 정의시 데이터베이스의 고유 기능을 사용합니다. # ex) 테이블 생성, 삭제 등 spring.jpa.generate-ddl=true # MySQL 을 사용할 것. spring.jpa.database=mysql # MySQL 설정 spring.datasource.url=jdbc:mysql://localhost:3306/kafka?use..
2022.08.02 -
[Spring] GraphQL 적용해보기(io.leangen.graphql)
1. GraphQL ? - GraphQL은 API를 만들 때 사용할 수 있는 쿼리언어이다. 그와 동시에 쿼리에 대한 데이터를 받을수 있는 런타임이기도 하다. - GraphQL은 선언형 데이터 feching 언어라고 흔히들 말하며, 그러므로 개발자는 무슨 데이터가 필요한지 요구사항만 작성하기만 하면 되고 어떻게 가져올지는 신경쓰지 않아도 됩니다. 2. GraphQL vs REST API - REST API와 GraphQL API를 사용할 때 다른 이유는 REST API를 사용할 때 URL에서 바로 진행한다. URL을 통해 Json 파일을 얻어내고 그를 통해 비지니스 코드를 작성해서 프론트에서 처리한다. GraphQL 이란 기존 굳건하게 지켜온 REST API를 대체할만한 수단이 될수도 있다. post, g..
2022.06.08