회사에서 일을 할때 개발해야 할 관련 기능들을 이해하고 작업을 들어가야 하는데 대부분 기한이 촉박하고 위에서는 재촉하고 시간이 없기 때문에 개발을 하면서 관련 기능들을 이해하는게 대부분이였다. 하지만 이렇게 시간에 쫓기며 일을 하다보니 일에 대한 이해도가 떨어진다는게 느껴졌고 기획이 수정되는 일이 잦아서 이미 개발한 기능을 수정해야 하는 일이 빈번했다. 급하게 개발을 하다보니 내가 개발한 기능이지만 어떻게 만들었는지 기억도 흐릿한 경우가 대부분이였다. 보통 주석으로 코드 흐름을 적어놨었다. 하지만 이 방법은 코드에 대해 이해할때는 좋지만 기능의 흐름을 이해하기로는 부족했고 한눈에 보기도 힘들다. 이 문제를 해결하고 안전한 코드를 작성하면서 빨리 개발을 할 수 있고 문서화도 시킬수 있는 알고리즘 순서도를 ..
지금까지 static, final, static final에 대한 개념이 제대로 박혀있지 않았다.... 지금에서야 개념을 정리하고자 글을 작성한다. 일단 내 머릿속에 있는 static은 선언시 메모리영역에 저장되며 static이 선언된 값을 하나의 주소값으로 공유해서 쓴다? 그리고 final은 값을 변경할 수 없다. static final은 이 둘을 합친것???... 여기까지였다... 우선 JVM 메모리 구조가 어떻게 생겼는지 공부할겸 다른 블로그에서 퍼왔다... 자바 소스 파일은 자바 컴파일러에 의해 바이트 코드 형태인 클래스 파일로 변환되고 변환된 클래스 파일은 클래스 로더가 읽어들이면서 JVM이 수행된다고 한다. Class Loader JVM 내로 클래스 파일을 로드하고, 링크를 통해 배치하는 작업..
1.인증 필터가 요청을 가로챈다. 2.인증 책임이 AuthenticationManager(인증관리자)에 위임된다. 3.AuthenticationManager(인증관리자)는 인증 논리를 구현하는 AuthenticationProvider(인증공급자)를 이용한다. 4.AuthenticationProvider(인증공급자)는 UserDetailsService(사용자 세부 정보 서비스)로 사용자를 찾고 암호 인코더로 암호를 검증한다. 5.인증 결과가 필터에 반환된다. 6.인증된 엔티티에 관한 세부 정보가 SecurityContext(보안컨텍스트)에 저장된다.
블로그 참고 https://hunit.tistory.com/189 1. 클라이언트가 요청을 보내면 2. Dispatcher Servlet으로 요청을 받는다. 3. Handler Mapping에 해당 요청을 매핑한 Controller가 있는지 검색요청을 한다. 4. 매핑된 Controller가 존재한다면 클라이언트의 요청을 처리하고 결과를 보여줄 view의 이름을 Dispatcher Servlet으로 return 한다. 5. Dispatcher Servlet은 view의 이름을 View Resolver로 보내 해당 view를 검색한다. 6. view의 처리 결과를 Dispatcher Servlet으로 return한다. 7. Dispatcher Servlet은 클라이언트로 최종결과를 return한다.
pom.xml org.springframework.boot spring-boot-starter-security io.jsonwebtoken jjwt 0.9.1 -장정우님의 스프링 부트 핵심 가이드라는 책을 보고 정리하였습니다.- 1. 클라이언트로부터 요청을 받으면 서블릿 필터에서 SecurityFilterChain으로 작업이 위임되고 그중 UsernamePasswordAuthenticationFilter(위 그림에서는 AuthenticationFilter에 해당한다.)에서 인증을 처리한다. 2. AuthenticationFilter는 요청 객체(HttpServletRequest)에서 username과 password를 추출해서 토큰을 생성한다. 3. 그러고 나서 AuthenticationManager에게..