본문 바로가기

전체 글

(74)
[TIL] 나의 마흔 다섯 번째 회고록 이번 '스프링 심화 프로젝트'를 하면서 크게 느낀 점이 있다. 단순한 제품 구매 서비스를 구현함에 있어서도 코드의 완성도를 어디까지 높일 수 있을지 고민하고 개선해야 한다는 점이다. 코드에 이정도면 되겠지..?는 없다. 프로젝트를 하면서 JPA이 제공해주는 기능이 많다는 것을 새삼 느꼈다. 그 중에서 내가 사용하고 있는 부분은 아주 극...극히 소수의 도구들로 뚝딱 거리고 있었다는 걸 알게되었다. 코드가 어디까지 완벽해야 하는지 스스로 어디까지 파볼 수 있는지 요즘 고민이 많다. 프로젝트를 마치며 이 개념은 머리에 남겨 앞으로 코드를 작성할 때 충분히 고려해야겠다고 생각한 개념이 있다. 1. OCP(Open Closed Principle) = 개방 폐쇄 원칙 개방 폐쇄의 원칙(OCP)이란 기존의 코드를 ..
[WIL] 나의 아홉 번째 회고록 이번 주간에는 혼자서 게시판을 만들어보았다. 혼자서 해본 프로젝트였지만 Git 사용법을 잊어버릴까봐 Git bash를 사용하여 버전관리도 해보았다. 덕분에 헷갈렸던 Git 명령어들도 손에 조금씩 익힐 수 있었다. 익숙하지 않은 내용들을 뒤로 미루기 바빴는데 지금이라도 익숙하지 않은 내용을 더 파고들어야겠다고 생각했다. 이번 주간에 참고했던 Git 명렁어 들을 잠깐 정리해볼까 한다. Git 기본 명령어 현재 상태 확인 (내가 제일 많이 사용하는 명령어) git status 전체 로그 확인 git log git 저장소 생성하기 git init 저장소 복제 및 다운로드 git clone [https: ~~~~ ] 저장소에 코드 추가 git add git add * 커밋에 파일의 변경 사항을 한번에 모두 포함 ..
[TIL] 나의 마흔 네번째 회고록 Today Error 혼자 만드는 게시판 Error 1탄 디테일한 부분까지 하나하나 찾아보면서 다시 만들다보니 새로운 에러들을 많이 만나게 되었다. 특히 Spring Security를 구현하면서 Jwt토큰을 발행하고 Jwt 인증하면서 userDetailService.loadUserByUsername(username); 에서 return하는 값이 null인 것이다. // JWT 토큰에서 인증 정보 조회 public Authentication getAuthentication(String username) { UserDetails userDetails = userDetailsService.loadUserByUsername(username); return new UsernamePasswordAuthenticat..
[TIL] 나의 마흔 세번째 회고록 혼자서 만들어 보는 Blog 프로젝트 했던 내용을 처음부터 혼자 완성해보려고 한다! 우선 Entity @(어노테이션)부터 몰랐거나 헷갈렸던 @(어노테이션)들을 천천히 정리해가면서 리뷰 gogo @Entity(name="USERS") @Getter @NoArgsConstructor public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String password; @Column(nullable = false) private String username; @Column(nullable = false) @Enumerated(EnumType..
[TIL] 나의 마흔 두번째 회고록 1일 1개념 싱글톤 패턴(Singleton Pattern) 이란? 말로만 들어봤던 Singleton Pattern은 무엇을 말하는 것까 궁금했었다. 궁금한 건 못참으니까 바로 검색해보았다. 싱글톤 패턴이란? -> 어플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴 인스턴스가 1개만 생성되는 특징을 가진 싱글톤 패턴을 이용하면 하나의 인스턴스를 메모리에 등록해서 여러 쓰레드가 동시에 해당 인스턴스를 공유하며 사용할 수 있게끔 할 수 잇기 때문에 요청이 많은 곳에서 사용하면 효율을 높일 수 있다. But!! 싱글톤을 만들 때 동시성(Concurrency) 문제를 고려해서 설계해야 한다는 점이 있다. 1. 싱글톤 패턴의 장점 ..
[TIL] 나의 마흔 한번째 회고록 1일 1개념 이번주는 프로젝트를 하면서 정확하게 알고싶었던 개념들을 하나씩 살펴보려고 한다. 그 중에서도 오늘은 @Bean과 @Component 차이점과 사용방법에 대해 알아보려고 한다:D 스프링은 개발의 제어권이 스프링 컨테이너(IoC 컨테이너)에 있다고 한다. IoC(Inversion Of Control)는 제어의 역전이라고 불린다. 스프링이 개발자 대신 객체를 제어하기 위해서는 객체들이 빈(Bean)으로 등록되어 있어야 한다. 스프링 MVC에서는 @Controller, @Service, @Repository 등으로 빈으로 등록할 수 있으며, configuration관련 객체들은 @Bean과 @Component으로 스프링 컨테이너에 객체를 Bean으로 등록할 수 있다. 그렇다면,, Bean과 Comp..
[WIL] 나의 여덟 번째 회고록 작은 프로젝트를 끝낸 이후에는 항상 정리해야 할 것들이 쏟아져나온다. 너무 많은 것을 해야하면 가끔 갈피를 못잡을 때가 있는데 내배캠에서는 과제 제출 이후에 항상 생각해볼 수 있는 질문을 던져주어서 좋다. 던져주신 질문에 응답하면서 이번 주차 때 내가 정확하게 이해하고 있어야하는 부분을 다시한번 되새겨 볼 수 있었다. Why: 과제 제출 시에는 아래 질문을 고민해보고 답변을 함께 제출해주세요. Q. Spring Security를 적용했을 때 어떤 점이 도움이 되셨나요? A. 보안과 관련하여 체계적으로 옵션을 제공해주는 Spring Security 사용함으로서 회원과 관련된 인증/인가에 대한 처리를 비교적 편리하게 구현 할 수 있었습니다. Q. Spring Security를 사용하지 않는다면 어떻게 인증/..
[TIL] 나의 마흔 번째 회고록 Today Error 팀 프로젝트 마무리 단계 2탄 팀프로젝트 최종 Test단계에서 Security와 관련된 Error를 팀원이 공유해주었다. [ Error 내용 ] ▶ 회원가입 후 로그인 시 발행 되는 토큰이 '정상적인 토큰 형식'이 아닐 경우에 Exception처리가 되지 않고 아무런 Message를 띄워주지 않는다. 아~~^_^ (처음 에러 공유 받았을 때 표정) SecurityConfig.java 파일에서 Exception처리를 따로 해주면 되겠네~ 응..아니야ㅎㅎ @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.csrf().disable(); http.sessionManag..