Dependency Injection Inversion of Control 이라고도 하는 의존성 주입(Dependency Injection) 객체가 사용하는 의존 객체를 직접 만들어 사용하는게 아니라, 외부에서 주입 받아서 사용한다. 때문에 객체는 자신이 어떤 구체적인 클래스에 의존하는지 알 필요 없이, 주입 받은 인터페이스나 클래스를 사용할 수 있다. 의존성 주입에는 3가지 방법이 존재한다. 1. @Autowired 2. Setter 3. Constructor 생성자 주입 그 중 1. @Autowired 는 권장되지 않는 방법으로, 인텔리제이에서도 Field Injection is not Recommended 라고 경고를 띄워준다. Field Injection is not Recommended. 필드 ..
1. 스프링 컨테이너 생성 스프링 컨테이너가 생성되는 과정을 알아보자. // 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 를 스프링 컨테이너라 한다. ApplicationContext 는 인터페이스다. 스프링 컨테이너는 XML 을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 직전에 AppConfig 를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것이다. 자바 설정 클래스를 기반으로 스프링 컨테이너(ApplicationContext)를 만들어보자. new A..
JwtTokenProvider 토큰 생성하고, 토큰을 복호화 해서 정보를 추출하고, 유효성을 검증하는 클래스입니다. jwt 토큰 구현 방식으로는 access Token, refresh Token 두가지 토큰을 사용하고, 인증 타입으로는 Bearer를 사용하였습니다. 최종 구현 코드 @Slf4j @Component // spring bean 등록 public class JwtTokenProvider { private final String key; private final Key jwtKey; private static final String BEARER_TYPE = "Bearer"; private static final String CLAIM_JWT_TYPE_KEY = "type"; private sta..
stream 의 map map 함수는 Java의 Stream API에서 제공하는 메소드, stream의 각 요소에 주어진 함수를 적용한 후 결과를 새로운 stream으로 반환한다. 기존에 있던 댓글을 가져와서 새로운 댓글로 업데이트 하는 과정을 의식의 흐름대로 작성해보니 이러했다. @Transactional public Comment update(Long commentId, CommentDto request) { // 변경하기전 댓글 객체 조회 Comment original = commentRepository.findById(commentId) .orElseThrow(() -> new BusinessException(ErrorCode.COMMENT_DOES_NOT_EXISTS)); Comment comm..
3주간 프로젝트를 마치고 회고록을 씁니다. 앞으로 남은 과제들이 많아서 해당 부분들은 차차 업데이트 할 예정입니다. 개발 배경 “네카라쿠배 개발자와 함께 Spring으로 인스타그램 서버 만들기” 라는 딥다이브(클론 코딩 챌린지) 에 참여하게 되었다. 챌린지의 주된 목표는 인스타그램 API 개발과 함께 1. Spring Security & JWT 사용 2. CI/CD 파이프라인을 구축하여 자동화 배포하는 것이다. 진행 중인 하루냥 프로젝트에서 Spring Security 에 대한 이해도 부족, 젠킨스 자동화 배포 구현 실패 경험으로 스스로 완성해보자는 목표가 있었다. 구현기간 23.03.24 ~ 23.04.13 (3주) 깨달은 점 강의로만 보던 스프링 시큐리티는 직접 구현하다보니 생각보다 더! 많이! 복잡..
1. 새로운 할인 정책 개발 “새로운 할인 정책을 확장해보자.” 👀 기획자 : 서비스 오픈 직전에, 할인 정책을 지금처럼 고정 금액 할인이 아니라 좀 더 합리적인 주문 금액당 할인하는 정률% 할인으로 변경하고 싶어요. 예를들어, 기존 정책은 VIP가 10000원을 주문하든 20000원을 주문하든 항상 1000원을 할인했는데, 이번에 새로 나온 정책은 10%로 지정해두면 고객이 10000원 주문시 1000원을 할인해주고, 20000원 주문시에 2000원 할인해주는 거에요! 💻 개발자 : 제가 처음부터 고정 금액 할인은 아니라고 했자나욧! 👀 기획자 : 애자일 소프트웨어 개발 선언 몰라요? “계획을 따르기보다 변화에 대응하기를” 💻 개발자 : ….(하지만 난 유연한 설계가 가능하도록 객체지향 설계 원칙을 준..
누군가에겐 소소한 나에겐 원대한 개발 목표 1. 알고리즘 뽀개기 - 유형 익히기 (1/6~ing) - 본격 문제 풀기 2. 이력서 & 포폴 - github.io 3. 사이드 프로젝트 - 하루냥 릴리즈 🔥 @23-03-08 Google Play 출시했습니다! 🎉🎉 @23-04-05 v2 버전 고도화 시작 4. 개인 프로젝트 - chat 앱 만들기 @23-02-13 구상중:진행 중인 사이드 프로젝트 안정화 되면 시작 - 깃허브 잔디 프로젝트 - instagram clone 프로젝트 (3/24~ing) 5. 업무 프로젝트 - websocket + webRTC 5. 강의 완강 - docker k8s (1/24~ing) - swift - AWS - 토비의 스프링 부트 (2/19~ing) - springboot-j..
에러 메세지 com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.clone.instagram.domain.user.dto.SignUpRequest` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) com.fasterxml.jackson 라이브러리를 사용하여 JSON 객체를 Java 객체로 변환하다가 생기는 에러 원인 com.clone.instagram.domain.user.dto.SignUpRequest 클래스..
- Total
- Today
- Yesterday
- insertMany
- 장애 대응
- addFilterBefore
- Cannot construct instance of
- Kotlin
- JPA
- Linux
- n+1
- MultipleBagFetchException
- dto 클래스 생성자
- array
- FetchJoin
- ?.let
- Java
- 스프링오류
- 배열
- Git
- port
- QueryDSL
- document insert
- ChatGPT
- junit5
- 추상클래스
- insertOne
- 문자열계산기
- spring boot 3
- Spring Security
- MongoDB
- checkout
- java.lang.NullPointerException: Parameter specified as non-null is null
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |