분류 전체보기
[Spring] Spring 싱글턴 컨테이너
Spring 싱글턴 컨테이너 빈을 등록한 DI컨테이너(AppConfig)가 있다. 클라이언트 A가 memberService를 요청하면 new memberService를 해서 return 해준다. 클라이언트 B가 memberService를 요청하면 new memberService를 해서 return 해준다. 클라이언트 C가 memberService를 요청하면 new memberService를 해서 return 해준다. @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") public void pureContainer() throws Exception{ AppConfig appConfig = new AppConfig(); MemberService memberService = appConf..
[Spring] Custom Validator 적용하기
Custom Validator 적용하기 엔티티에 조건을 걸 때에, @NoArgsConstructor @Getter public class AccountCreateDto { @NotBlank @Length(min=2, max=20) private String loginId; @NotBlank @Length(min=8, max=50) private String password; 흔히 다음과 같은 어노테이션을 사용해서 검증을 한다. Controller단에서는 대충 다음과 같이 사용될 것이다. @PostMapping public ResponseEntity createAccount(@RequestBody @Valid AccountCreateDto accountCreateDto, Errors errors) thro..
[Spring] JASYPT 적용하기
JASYPT 적용하기 JASYPT는 'Java Simplified Encryption'의 약어이다. 개발자가 암호화 작동 방식에 대한 깊은 지식 없이도 최소한의 노력으로 프로젝트에 기본 암호화 기능을 추가할 수 있는 JAVA 라이브러리이다. 단방향 및 양방향 암호화를 위한 보안 수준이 높은 표준 기반 암호화 기술이다. Hibernate과 transparent한 통합이 가능하다. Spring 기반 어플리케이션과의 통합에 적합 하며 Spring Security 와도 통합 가능하다. 어플리케이션 구성을 암호화하기 위한 통합 기능을 가지고 있다. .properties 파일이나 .yml 파일 등에서 민감한 정보가 있고 암호화할 필요성이 있을 때에도 사용할 수 있다. 이 글은 해당 상황일 때를 기반으로 작성하였다...
[Spring] HATEOAS에 대해
WHY HATEOAS?? what is RESTful API? /employees/3 은 REST 가 아니다. 단순히, GET, POST,etc 또한 REST 가 아니다. CRUD 를 사용한다고 해서 REST 가 아니다. 위의 방법들로 빌드한 것은 RPC(Remote Procedure Call)이라고 보는 것이 맞다. 왜냐하면, 이것들만 가지고서는 서비스와 어떤 상호작용을 하고 있는지 알 길이 없기 때문이다. 만약 서비스를 개시하고 싶다면, 이런 정보에 대한 docs 나 portal를 작성해야 하는 것이 맞다. REST 창시자 Roy Fielding은 다음과 같이 말했다. If the engine of application state (and hence the API) is not being driven..
![[Spring] Rest Docs 이용해보기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQSj4t%2FbtqJhIaQ8Kv%2FemnnobruXBCsFdJFXGAMKK%2Fimg.png)
[Spring] Rest Docs 이용해보기
RestDocs를 이용하면 API에 대한 문서를 생성할 수가 있다. 수행하려는 Test클래스에 @AutoConfigureRestDocs 다음과 같은 어노테이션을 사용해주면 준비는 완료된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 mockMvc.perform(post("/api/events/") .contentType(MediaType.APPLICATION_JSON_UTF8) .accept(MediaTypes.HAL_JSON) .conte..
![[Spring] EventResource를 이용한 HATEOAS 적용](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU87gh%2FbtqI5yAXsRv%2FTXfzMUZIvUkr3Na1am4Vpk%2Fimg.png)
[Spring] EventResource를 이용한 HATEOAS 적용
bepoz-study-diary.tistory.com/197 [Spring] HATEOAS에 대해 WHY HATEOAS?? what is RESTful API? /employees/3 은 REST 가 아니다. 단순히, GET , POST ,etc 또한 REST 가 아니다. CRUD 를 사용한다고 해서 REST 가 아니다. 위의 방법들로 빌드한 것은 RPC(Remote Procedure.. bepoz-study-diary.tistory.com HATEOAS를 적용하기 위해 EventResource를 이용해 보겠다. 앞서서 HATEOAS 1.0.2 이후로 ResourceSupport => RepresentaionModel Resource => EntityModel Resources => CollectionM..
[Spring] Errors Serializer 만들기
Errors는 자바 빈 스펙을 따르지 않기 때문에 Serialize 할 수 없다. 하지만 Errors를 꼭 body에 넣어서 그 값을 json으로 보고싶을 경우에 serializer를 따로 생성해줄 수가 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 @JsonComponent public class ErrorsSerializer extends JsonSerializer { @Override public void serialize(Errors errors, JsonGenerator gen, SerializerProvider serializers) throws IOExce..
[Spring] @Autowired 생성자 주입방법에 대해서
생성자 방식으로 @Autowired를 진행할 때에 생성자가 1개이면 @Autowired 를 생략할 수 있다고 배웠다. 1 2 3 4 5 6 7 8 public class EventController { private final EventRepository eventRepository; @Autowired public EventController(EventRepository eventRepository) { this.eventRepository = eventRepository; } Colored by Color Scripter cs 위의 코드에서 @Autowired 를 생략할 수 있다는 말이다. 더불어서 1 2 3 4 5 @RequiredArgsConstructor public class EventCont..