Spring

단계별로 성장하자!
1. 문제 상황 내가 만든 사이트에서는 아무래도 우리 학교 대학생을 상대로 하기 때문에 회원가입시 학번, 패스워드, 이메일을 입력한다. 이 정보는 개인정보 이므로 암호화 할 필요가 있다. 패스워드 같은 경우는 비교만 하면 되므로 단방향 암호화 알고리즘을 이용하는 PasswordEncoder의 도움을 통해 쉽게 암호화 하였는데, 학번이나 이메일은 정보로 사용하기 위해서는 복호화할 수 있어야 하므로 양방향 암호화 알고리즘을 사용해야 한다. 어떻게 동작하는지를 먼저 파악하기 위해 먼저 AES256에 대해서 공부하고 코드를 구성하였다. 2. 문제 해결 ✏️ AES-256 대칭키 암호화 알고리즘을 사용하자 AES(Advanced Encryption Standard) AES 암호화 알고리즘은 암호화 및 복호화에 동..
1. 문제 상황 SecurityConfig.class 에서 mvc.ignoring으로 설정한 uri 들이 자꾸 무시되고 그대로 Security Filter를 거치는 버그 발생 2. 문제 해결 ISSUE #1번에서 발생한 문제와 똑같이 JwtTokenFilter에 생각 없이 @Component를 달고 SecurityConfig에서 new로 다시 생성해서 설정한 것이 문제였다. @Component로 인해 어플리케이션 실행 시 필터에 자동 등록되었고 내가 한 번 더 생성해 버려서 꼬여버린 것이다. 결론 JwtTokenFilter에서 @Component를 삭제하면 된다!
1. 문제 상황 사용자가 반납을 직접 정해진 시간 내로 하지 않았을 경우 사용자에게 페널티를 주고 서버에서 자동으로 반납하는 기능을 구현해야 한다. 어떻게 구현해야 할까 고민하다가 "API를 구현해 놓고 cron 명령으로 정해진 시간마다 호출해야 할까?"라고 생각했고, Spring에는 이러한 기능을 제공해주는 것이 없는지 찾아보았다 2. 어떻게 구현할까? 우선 Spring에 스케줄링을 도와주는 기능이 있는지 알아보았다. @Scheduled 어노테이션을 사용하면 일정한 시간 간격 또는 특정 시간에 해당 코드를 실행하도록 설정할 수 있다고 한다. 3. @Scheduled를 적용해보자 (1) 먼저 Main Application class에 @EnableScheduling 어노테이션을 추가한다. @SpringB..
Spring MVC에 대해서 공부하던 중 DispatcherServlet에서 Handler를 매핑하는건 알겠는데 언제 url까지 매핑해서 해당 method를 실행하는거지? 라고 궁금증이 들어서 알아보게 되었습니다! 위의 과정을 이해하려면 먼저 FrontController의 역할을 하는 먼저 DispatcherServlet의 doDispatch()를 보겠습니다. (1) DispatcherServlet의 doDispatch() 위의 파란줄을 보면 getHandler() 를 통해 request에 맞는 handler를 가져오는 것 같은데 한번 확인해보겠습니다. (2) DispatcherServlet의 getHandler() 우선 HandlerExecutionChain을 return하며 HandlerMapping..
1. Path Variable @GetMapping("/{userId}") public String findUser(@PathVariable String userId){ return "get userId=" + userId; } 서버로 데이터를 넘기는 방법 중 하나인데 url 경로 내에 리소스를 추가하는 방법이다. 2. Query Parameter @ResponseBody @RequestMapping("/order") public String requestParamRequired( @RequestParam(required = true) String username, @RequestParam(required = false) Integer age){ log.info("username={}, age={}", ..
1. Bean scope란? 빈이 존재할 수 있는 범위를 뜻한다. 스프링 빈은 기본적으로 싱글톤 scope로 생성된다. 2. 스프링이 지원하는 스코프 종류 (1) 싱글톤: 기본 스코프이며, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 scope (2) 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더이상 관리하지 않는 짧은 범위의 scope (3) 웹 싱글톤 스코프를 제외한 스코프는 진짜 필요한 곳에서만 사용해야 유지보수가 편하다 라는 말을 시작으로 한번 정리해보자! 3-1. Prototype Scope 스프링 컨테이너에 조회하면 스프링 컨테이너는 항상 새로운 인스턴스를 생성해서 반환한다. 클라이언트가 prototype scope의 빈을 요청하면 그때서..
DevPoong
'Spring' 태그의 글 목록