일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링부트
- 스프링 공부
- nestjs
- JPA공부
- 플러터 공부
- querydsl
- 기술면접공부
- JPA
- nestjs공부
- 카프카
- JPA 공부
- 스프링공부
- nestjs스터디
- Flutter
- JPA예제
- DDD
- 플러터 개발
- 알고리즘공부
- 프로그래머스
- 코테공부
- 자료구조공부
- 자바공부
- Axon framework
- JPA스터디
- 스프링
- 스프링부트공부
- K8S
- Kafka
- 코테준비
- 기술공부
- Today
- Total
목록Develop/[Spring] (96)
DevBoi
필요에 의해서 알림을 메일로 전송해야하는 기능을 개발해야해서 gmail smtp 서버를 연동해보려고한다. 1. Google 보안 설정 진행 하기, 2단계 인증하기 https://myaccount.google.com/u/0/security?pli=1 Google 계정 myaccount.google.com 2. 앱 비밀번호 설정 3. 앱만들기를 하면 자동으로 비밀번호를 알려준다. 의존성 주입 implementation 'org.springframework.boot:spring-boot-starter-mail' 설정 파일 spring: mail: host: smtp.gmail.com port: 587 username: ${MAIL_USERNAME} password: ${MAIL_PASSWORD} propert..
Spring 에서 기본 필터를 제공해주거나, 빈으로 등록하는데 스프링 버전이 변경되면서 Response를 내리는 필터의 설정 방법도 조금 바뀌었다. server: servlet: context-path=/: encoding: charset: UTF-8 force: true 위 처럼 진행하면 된다.(application.yaml)
공부를 막 시작한 친구를 위해.. 기록용 Spring 에서는 profile별로, 변수나 정적 값의 정보를 다르게 가져갈수 있다. 간단하게 파일 구조는 이렇게 분리가 가능하다. application-환경.yaml 이다. 흔히 Java를 런시거나, Jar파일을 실행할때, VM Options을 주게 되는데 이 Vm Option으로 환경변수에 대한 값을 지정해주면 해당 Profile로 분기처리를 하여, 동작을 제어할 수 있다. 인텔리제이를 예로 위 처럼 -D로 변수명,값을 Vm option으로 넘겨주게 되면 스프링이 기동될때 해당 프로파일에 대한 값으로 정보를 가져오게 된다. 이게 가장 흔하고 기본적인 내용이다. @ActiveProfile이나 등등 해당 프로파일을 가지고 빈의 값을 동적으로 분기처리하는.. 그런..
머리속에 들어있는 내용들을 정리한다. 1. 밸리데이션 관련 의존성 주입. implementation 'org.springframework.boot:spring-boot-starter-validation' 2. 간단한 테스트 @RestController @RequiredArgsConstructor public class MemberController { private final MemberMapper memberMapper; @RequestMapping("/member") public String mapperTest(@RequestBody @Valid MemberDto memberDto){ return "success!"; } } @Getter @Setter @AllArgsConstructor public..
갑자기 생각난것과. 좋은 공통화에 대한 고민을 하다가. 작성하는 글 사실 공통화를 그렇게 열광하지는 않는다. 운영 측면에서 공통화가 무조건 이득이라고 생각하지도 않는다. 때로는 각 상황에 맞는 클래스파일이 하나씩 있는게 좋다고도 생각한다. 단순히 아래와 같은 Response가 있다고 가정하자. @PostMapping("/sample") public Member test(@RequestBody Member member){ System.out.println("id_post~~:"+member.getId()); return member; } 해당 응답 객체를 좀더 공통화를 한다면 아래와 같을 것이다. @AllArgsConstructor @Getter public class EntityResponse { T d..
Spring boot 3.2 버전으로 올렸다. 스웨거 관련 다양한 설정방법들이 난무해서 어떤게 문제인지 알기 쉽지않다. 그리고 swagger설정에 시간투자를 많이하면 귀찮기도하다. 그래서 정리하자면 단순히 아래 의존성만 주입해도된다. implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' 아래 주소로 확인 가능하다.(로컬 빌드 기준) http://localhost:8080/swagger-ui/index.html 패키지 스캔도 자동으로하고, 여러가지 자동으로 지원해준다. 더 세세한 설정방법등은..사실 뭐 있겠지만.. 사실 나는 스웨거에 별로 시간투자를 안하려고한다 (할게 많다..)
쉽게 json과 ObjectMapper를 많이 쓴다. 이유는 String Object간의 자유로운 이동과 변환을 위해서 많이 사용한다. 내가 주로 사용하는것 외에도 다른 기능들이 존재할 것 같아서, 해당 기능들을 사용하면서 포스팅해보자 1. 의존성 추가 implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.3' 2. 간단한 사용 예제 (Object -> String, writerValue) package com.example.demo; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import org.springframework..
Functional Interface와 인터페이스를 결합하는 방법에 대해서 알아보자 1개의인터페이스가 있고 이를 가지고 Configuration을 만들어보자 ObjectProvider를 활용해서 한개의 인터페이스로 여러개의 빈을 만드는 과정이다. 간단하지만 아래와 같이 설계했다. public interface Food { public String getEat(); interface FoodHandler { public String eat(); } } public interface FoodFunc { Food.FoodHandler supply(); } public class FoodImpl implements Food{ FoodHandler handler; public Food with(FoodFunc h..
흔히 DL 관련, 사용으로 ObjectProvider를 많이 쓴다. 어떻게 구현되어있고, 어떤식으로 동작하는지 한번 알아보자 Spring 4.3에 추가가 되었다고 한다. 대부분 프로토타입빈과, 싱글톤 빈을 둘다 쓰고 싶을때 사용한다고 보면 된다. 싱글톤 빈에서, 프로토타입 빈을 사용하고자 한다고 가정해보자 프로토타입 빈은 빈을 요청할때마다 신규로 생성이 되는 타입이다. 싱글톤은 미리 생성해둔, 한개의 빈이 리턴되는 형태이다. 그런데, 싱글톤 내에서 프로토 타입빈을 호출하게 된다면? 프로토 타입빈은 변경되지 않고, 계속 같은 빈을 호출하게 된다. 이는 프로토 타입 빈이 알맞게 동작하지 않게 되는 것이다. 이를 극복하기 위해, ObjectProvider,ObjectFactory를 사용한다. @Configur..
멀티모듈, 단일 프로젝트로하면 어떤 장점이 있을까? 왜 굳이 멀티 모듈을 두는것일까? 시스템적으로 보장이되고, 빠른 개발 사이클을 가질 수 있다. 멀티모듈과 MSA가 어떤 연관이 있을까? MSA에서는 분리와 병합이 자주된다. 시스템의 분리,통합을 유연하게 만들어줄 수 있는 좋은 아키텍처를 만들 수 있다. 클린 아키텍처라는 책에서는 모놀리틱과 msa적인 변경이 자유로운 아키텍처가 좋은 아키텍처라고 얘기한다. 대부분 공통화된 코드를 분류해서 뽑아내려고하면 공통화된코드를 Common으로 모은다. 그러면, common이 계속 커지면서 개발하기 힘들어진다. 1. 스파게티 소스가 된다. Common이 커지면서 영향범위가 점점 커지기 마련이다. 즉 스파게티 소스가 되고 분리가 어려워진다. 쉽게 말하면 뭐가 뭔지 모르..