본문 바로가기

앙펭7

인터페이스를 통한 느슨한 결합 class A{ public void methodA(B b){ b.methodB(); } } class B{ public void methodB(){ System.out.println("methodB()"); } } class InterfaceTest{ public static void main(String[] args){ A a = new A(); a.method(new B()); } } 위의 내용에서는 클래스 A가 클래스 B의 인스턴스를 직접 사용하고 메서드를 호출한다. 이런 경우에 클래스 A와 클래스 B은 서로 직접적인 관계에 있게 된다. 이 방식의 단점에 대해서 알아보면 이번 주제를 잘 이해할 수 있을 것이다. 1. 클래스 A를 작성하려면 클래스 B가 먼저 작성이 되어 있어야 한다. 2. 만약 중.. 2021. 7. 15.
URLEncoder URLEncoder @PostMapping("/new-post") public String newPostSubmit(@CurrentUser Account account, @Valid PostForm postForm, Errors errors, Model model){ if(errors.hasErrors()){ model.addAttribute(account); return "post/form"; } Post newPost = postService.createNewPost(account, modelMapper.map(postForm, Post.class)); return "redirect:/post/"+ URLEncoder.encode(newPost.getPath(), StandardCharsets.UTF.. 2021. 7. 1.
인증이 필요한 요청에 대한 테스트 작성 (SpringBoot & JUnit5) 스프링 시큐리티를 사용해서 애플리케이션을 작성하다보면 대부분의 요청에 대해서 사용자의 인증을 필요로 하게 된다. 그렇기 때문에 애플리케이션의 대부분의 요청은 인증된 사용자만 접근이 가능하다. 그렇다면 테스트는 어떨까? 테스트도 동일하게 애플리케이션을 띄우고 작성한 코드에 의해서 요청을 보내고 테스팅을 하는 것이기 때문에 마찬가지로 인증을 필요로 한다. 이처럼 테스트시에도 인증을 필요로하는 요청을 인증 없이 요청하게되면, 스프링 시큐리티에 의해서 /login으로 리다이랙트된다. 그렇다면 테스트마다 인증이 필요할 것이고, 매번 로그인을 해줘야할 것이다. 하지만 그렇다고 매 테스트마다 사용자를 생성하고, 로그인을 하는 것을 반복하기는 쪼오끔 그렇다^^ 그렇기 때문에 스프링 시큐리티에서는 Testing에 대한 .. 2021. 6. 20.