본문 바로가기
728x90

전체 글389

refactor ) 요만큼 프로젝트 리팩토링을 하자 ! 요새 글을 쓰지 않았지만 요만큼 프로젝트는 지금도 조금씩 조금씩 진행중이다. 이번에 백엔드 개발자님이 들어오셨는데 아는 게 많으셔서 배울 게 무지 많다! 개발자님이 기존 코드를 보시고 몇 가지 컨벤션을 제안해주셨다. 필수도 있고 선택도 있었는데 모두 괜찮은 방법들이라고 생각했고 그렇다면 고칠 수밖에 없지 ! 1. 전역 변수를 지역 변수로 수정하자 기존에는 Email 서비스 등 전역 변수를 사용 중인 곳이 있었다. 그런데 싱글톤 객체에서 중간에 변경이 가능한 지역 변수를 사용할 경우 여러 스레드에서 접근을 하면 스레드 세이프 하지 않아 문제가 생길 가능성이 있다고 했다. 그래서 해당 코드를 수정해주었다.! Before private final SpringTemplateEngine templateEngin.. 2024. 1. 18.
좋은 개발자란 무엇일까? 가끔 주변에 얘기한다. 내가 개발을 좋아하고 이를 지속할 수 있는 이유는 개발과 나를 동일시하지 않아도 되어서라고. 음악을 할 때는 음악과 나를 완전히 동일시했기 때문에 음악을 사랑하는 만큼 괴로움도 컸지만 나에게 개발은 이제까지 접하지 못한 새로운 문물 정도로 재밌고 궁금해서 더 알아가고 싶지만 이게 망한다고 내 인생이 망할 것 같진 않은 그런 사이를 유지하고 있다. 그러나 우리가 불타는 사랑을 하지 않고 나와 한 몸이 아님에도, 나는 너를 더 이해하고 알아가고 싶고 최후에는 좋은 개발자가 되고 싶다. 좋은 개발자란 무엇일까. 회사에서 프로젝트를 처음 설계부터 시작하며 데이터베이스 구조, 그러니까 스키마나 테이블 설계를 하고 변수명을 짓고 디렉토리 구조와 엔티티와 클래스 명을 짓고 그걸 직관적으로 변경.. 2024. 1. 15.
JAVA ) List.size() == 0 일 때, forEach 를 사용해도 예외가 발생하지 않을까? forEach() 는 java 8 부터 나온 손쉽게 for 문을 돌릴 수 있는 기능이다. 예를 들어 List userList = userRepository.findAll(); List userSignUpDtoList = new ArrayList(); userList.forEach(user -> userSignUpDtoList.add( UserSignUpDto.builder() .email(user.getEmail()) .password(user.getPassword()) .build() ) ); 이렇게 리스트에 있는 유저를 DTO에 옮겨 리스트에 담고 싶다면 forEach로 손쉽고^_^ 깔끔하게 옮길 수 있단 사실~ 그런데 급 궁금증이 들었다 ㅡ.ㅡ 만약 ListSize() 가 0 이라면, forEach.. 2024. 1. 10.
Springdoc ) Spring Boot 3 이상에서는 Swagger2 대신 Springdoc(Swagger3) 자동으로 API 명세서를 생성해주는 Swagger 라는 좋은 녀석이 있다고 했다. 사용해보려고 직접 종속성도 추가해보았으나 Swagger 는 Spring boot 3 버전 이상을 지원하지 않는다고 한다 ㅡ.ㅡ (javax 클래스 못찾겠다고 오류뜸;; spring boot 3 부터는 jakarta 쓴다궁...) 그래서 Swagger2 대신 스프링 부트 3 부터는 springdoc 을 이용한대잉~ 이건 Swagger3 라고 한다요 안 사용해볼 수 없지! Gradle implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' 난 Gradle 을 사용하기 때문에 요렇게 종속성을 추가해주었다. application.yml springdoc: .. 2024. 1. 5.
Spring Security ) RestAPI 로 통신할 때 Session을 사용하는 자동 로그인을 사용할 때 Handling 하기 Spring Security 를 formLogin() 으로는 사용해보았는데 APPLICATION/JSON 으로 받아서 사용하는 것은 해본 적이 없었는디,,@ㅅ@ 이번에 구현을 해보게 되어 간단히 사용법을 작성해보고자 한다~ UsernamePasswordAuthenticationFilter 해당 인증 필터에서 JSON를 구현하면 된다아. @Slf4j public class LoginAuthenticationFilter extends AbstractAuthenticationProcessingFilter { public LoginAuthenticationFilter(final String defaultFilterProcessesUrl, final AuthenticationManager authenticatio.. 2024. 1. 5.
취업 한 달 차 후기 안녕? 이 블로그를 시작한지 일년이 넘었다. 취업한지는 한 달 정도가 지났고. 나의 평일 하루는 출퇴근이 왕복 3시간 정도 걸려서 지하철에서는 토비의 스프링 강의를 짬짬히 듣고 아침엔 간단하게 그 날 할 일을 정리하고 일을 한다. 점심은 회사 식당에서 공짜밥을 먹고 호다닥 다시 사무실로 가서 이펙티브 자바를 공부하거나 블로그를 쓴다. (취업 후 블로그가 올라오는 건 거의 회사에서 짬내서 쓴 것...) 점심 시간이 끝나면 또 일을 하고 퇴근 길에 강의를 듣고 집에 와서 밥먹고 씻으면 9시 30분 쯤... 두 시간 정도 사이드 프로젝트를 하면 11시 30분 30분 정도 폰을 하다가 12시 전에 잠을 잔다. 뿌듯하지만 딱히 자유 시간은 없음. 대신 주말에 사이드프로젝트를 조금 하고는 거의 누워 있당...^_^.. 2024. 1. 1.
728x90