Spring

· BackEnd
SpringBoot에 PostgreSQL과 MongoDB 연결하기연결이유RDS를 사용한지 어엿.. 3주밖에 되지 않았으나 3만원 결제 통보를 받고 말았다.. 💸 RDS는 자동 백업 기능,, 데이터베이스 복원을 위해 스냅샷을 생성 ,, 등의 이슈로 생각보다 비싸다고 한다. 🙄 그래서 갓선배님의 조언으로 마이그레이션을 해보기로 했다 ! (사실 서비스 전이라 엄밀히 따지면 마이그레이션 아님) 암튼 application.yml 과 함께라면 처음 써보는 PostgreSQL DB 연동도 두렵지 않기 때문에 넉넉한 프리티어를 제공해주는 Supabase PostgreSQL을 도입하게 되었다. Supabase PostgreSQL 연동우선 이 글 을 통해 DB를 만들고, 아래 DB Settings 를 참고하여 Datagr..
다음은 토비의 스프링 7.3~7.4장 을 공부하고 정리하였습니다. 7.1~7.2장 내용 간단 요약 SQLReader - SQL을 어떻게 읽어오는지 SqlRegistry - SQL을 어떻게 저장해둘 건지 SqlService 이란? @PostConstruct 가 달린 빈 초기화 메소드와 SqlService 인터페이스에 선언된 메소드인 getFinder()을 sqlReader과 sqlRegistry를 이용하도록 변경 자기 자신을 참조하는 빈이다. → sqlService를 구현한 메소드와 초기화된 메소드는 외부에서 DI 된 오브젝트라고 생각하고 결국 자신의 메소드에 접근하므로 이 셋을 이용하여 디폴트 의존관계를 갖는 빈을 만들 수 있다. 디폴트 의존관계란 외부에서 DI 받지 않는 경우 기본적으로 자동 적용되는 ..
다음은 토비의 스프링 6장 AOP 를 공부하고 정리하였습니다. AOP를 이해하기 전에 먼저 아래 개념이 선행되어야 한다. 빈 생명주기 (그냥 훑어봐도 이해하기 쉽다. 아래 빈 후처리~ 로직을 이해하려면 필연적으로 알아야 함 !) DI Transaction (DataBase 관련 개념) 프록시 개념 아래 여러 혼란스러운 개념들이 나오니 단어들을 헷갈리지 않고 정리하면서 보는 과정이 필요하다.. AOP를 한 마디로 말하면, 공통된 기능을 재사용하는 기법이다. spring에서 볼 수 있는 AOP의 적용 대상은 바로 @Transactional 기능이다. 우선 Transactional 의 기본 코드는 아래와 같다는 사실을 알아두자. public void upgradeLevels() { PlatformTransac..
다음은 토비의 스프링 5.1 사용자 레벨 관리 기능 추가 를 공부하고 정리하였습니다. 요구사항 - 사용자의 레벨은 BASIC, SILVER, GOLD 세 가지 중 하나이다. - 사용자가 처음 가입하면 BASIC 레벨이며, 이후 활동에 따라 한 단계씩 업그레이드 도니다. - 가입 후 50 회 이상 로그인하면 BASIC에서 SILVER 레벨이 된다. - SILVER 레벨이면서 30번 이상 추천을 받으면 GOLD 레벨이 된다. - 사용자 레벨의 변경 작업은 일정한 주기를 가지고 일괄적으로 진행된다. Level을 Enum 을 쓰자 ! 만약 Enum이 아닌 class 로 쓴다면 ? 아래와 같이 일일히 int type으로 저장한다.이후 DB에서 어떻게 갖다 쓸 것인가? if (user1.getLevel() == U..
다음은 토비의 스프링 3.4 컨텍스트와 DI ~ 3.5장 3템플릿과 콜백 을 공부하고 정리하였습니다. DI에 대해 다시 복습하자 ! 1. 그림으로 표현해본다면? Pencil 객체와 Store 객체가 있다. 이 때 의존성은 다음과 같이 문장으로 표현된다. A가 B를 사용한다. A가 B에 의존성이 있다. A-store / B-pencil DI 가 아닌 코드를 먼저 보자. public class Store { private Pencil pencil; public Store() { this.pencil = new Pencil(); } } Store 객체 안에서 직접 객체를 생성하고 초기화한다. DI 인 코드 public class Store { private final Pencil pencil; public S..
아래 글은 토비의 스프링을 읽고 공부하였습니다. 목차 1. DI란 1) 의존관계 2) 모델링 시점의 의존관계 vs 런타임 시점의 의존관계 3) 제3의 존재 4) 의존관계 검색과 주입 5) 의존관계 주입 방법 3가지 2. XML을 이용한 DI 1) DI 설정정보를 만드는 XML 2) XML을 이용하는 애플리케이션 컨텍스트와 Datasource 1. DI DI는 의존관계 주입으로, IoC와 동떨어진 개념은 아니다. DI는 오브젝트 레퍼런스를 외부로부터 제공(주입)받고 이를 통해 여타 오브젝트와 동적으로 의존관계가 만들어지는 것이 핵심이다. 우리가 보통 알고있는 가장 대표적인 DI는 @Autowired 어노테이션일 것이다. 1. 의존관계 객체를 직접 생성하는 것이 아니라 외부에서 생성한 후 주입하는 방식이다...
아래 글은 토비의 스프링을 읽고 공부하였습니다. 목차 1. IoC란 1) 팩토리 2) IOC(제어의 역전) 3) 프레임워크와 라이브러리 2. 스프링의 IoC 1) Bean과 Bean Factory 2) 애플리케이션 컨텍스트와 동작방식 3) 직접 만든 애플리케이션 컨텍스트와 object factory의 차이점 3. 싱글톤 1) 싱글톤으로 만드는 이유 2) 싱글톤 패턴의 한계 3) 싱글톤 레지스트리 4) 싱글톤 사용 시 주의할 점 1. 오브젝트 팩토리 1. 팩토리 앞에서 우리는 UserDaoTest에 DB 연결에 대한 책임(ConnectionMaker 구현 클래스)을 던져버렸다. 이번에는 이 책임을 DaoFactory로 분리해보자. public class DaoFactory { public UserDao u..
아래 글은 토비의 스프링을 읽고 공부하였습니다. 목차 1. DAO 1) DAO vs DTO 2) DAO-관심사의 분리 2. DAO의 분리 1) 클래스의 분리 2) Interface의 도입 3) 관계설정 책임의 분리 2. 원칙과 패턴 1) 개방 폐쇄 원칙 2) 전략 패턴 1. DAO 1. DAO vs DTO DAO에 대해 파악하기 위해 우리가 개발할 때 많이 사용하는 DTO 개념과 비교해보자! DTO는 데이터를 운반하기 위한 틀이라면, class Person { private String name; private int age; } DAO는 data에 접근하기 위한 객체로, DB 접근에 대한 로직과 비즈니스 로직(Service, Controller, Repository)을 분리하기 위해 사용한다. 사실 지..
FOSSLIGHT Fosslight는 LG전자에서 자체 개발하여 사용하고 있는 오픈소스 관리 통합 시스템을 누구나 사용할 수 있도록 2021년 오픈소스로 공개한 프로젝트이다. 매년 oss에서 오픈소스 컨트리뷰션을 통해 자체적으로 멘토와 멘티를 선발하고 있으며 좋은 기회에 참여할 수 있게 되었다. FOSSLight FOSSLight으로 완성하는 Open Source Governance fosslight.org 이슈 내용 ISSUE - #817 Project List, 3rd Party List > Add watcher search PR - Added watcher search box in Project List, 3rd Party List 내가 맡았던 이슈는 위의 사진처럼 검색을 할 때 Watcher 값도..
· 협업도구
문제상황 3주 전에 하던 GIT 작업을 다시 진행하던 도중 remote의 상황이 바뀌었다. 이후 merge 이후 PR을 올리니 다른 사람들이 했던 커밋들이 모두 commit history에 쌓이는 모두 반영되는 불상사가 벌어지고 말았다.. 목표 나의 목표는 remote 깃 레포에 있는 6a1c234 commit 위에 내 commit만을 쌓아 PR을 날리는 것이다. 1. 나의 commit 상태 PS C:\Users\20wjs\OneDrive\COMPUTER\***> git log --oneline 0a7d2bf5 (HEAD -> test2, origin/feat/#817, test, feat/#817) Merge branch 'feat/#817' of github.com:Youngseo-Jeon0313/f..
· 협업도구
문제 사항 오픈소스에 기여하는 과정에서 github indent가 지켜지지 않고 커밋되는 문제가 발생하였다. 혹시나 설치 상황에서 내가 놓친 게 있나 싶어 code style에 대한 issue 를 검색해보니 google java convention이 적용되고 있음을 알게 되었다! 해결 방안 1. IntelliJ > Files > Settings에서 google-java-format을 다운받아 Enable시킨다. (Enable 시키면 아래처럼 Disable 로 나타나게 된다) 2. 이후 Help > Edit Custom VM Options 버튼을 누르면 아래와 같이 창이 나오게 되는데 5번째 줄 아래의 내용을 복사해 붙여넣는다. --add-exports=jdk.compiler/com.sun.tools.ja..
개요 일단 JWT에 대한 개념부터 알고가자! JWT는 JSON Web Token의 약자로, 로그인 인증 기능에서 사용하는 토큰을 만들 때 사용하는 기술이다. JWT를 구현하는 방법은 두 가지이다. 1. jwt-java 라이브러리를 사용하여 JWT를 생성하고 파싱하는 방법 2. spring security 라이브러리 이용하기 이번에 로그인 로직을 짤 때 일반 로그인은 1번으로, 소셜 로그인은 2번 로직으로 짜게 되어 JWT와 많이 친해질 수 있었다. 이번 글은 1번 방법에 대한 설명이다. 2번 방법(JWT+소셜로그인) 에 대한 설명은 이쪽에서 확인 가능하다. UMC 동아리에서 제공해준 템플릿 중 로그인 구현 방법 코드를 인용하였다. 아래 코드로 자세히 알아보자. service/JwtService.java ..
jeonyoungseo
'Spring' 태그의 글 목록