Group Study (2024-2025) 54

[Spring 심화] 10주차 - 스프링 프로젝트 시작하기

개요프로젝트 개발 전, 우리는 시스템을 구성하는 주요 컴포넌트들(클라이언트와 서버, DB, 외부 서비스 등)을 어떻게 배치하고 통신할지, 어떤 기술을 사용할지에 대한 전체 IT 시스템이 어떻게 구성되고 연동되는지를 다룬다.이를 시스템 레벨 아키텍처라고 한다.ex) React로 구성된 프론트엔드 → Spring Boot 백엔드 → MySQL 데이터베이스 → Redis 캐시 → Elasticsearch 검색 엔진해당 아키텍처 구성이 끝났을 때, 다음으로 결정할 사항은 백엔드 애플리케이션의 내부 구조를 다루는 것이다. 토비의 스프링에서는 스프링 웹 애플리케이션의 아키텍처를 어떻게 설계할 수 있는지 알아볼 것이다. 애플리케이션 아키텍처의 종류우선 애플리케이션 아키텍처의 종류에는 세 가지로 나눈다.1.계층형   ..

[Spring 입문] Toy Project - Team 3lee

팀원이예지(팀장)마이페이지 구현, 머스테치 수정이지은테이블 매핑, 테이블 구현/수정이경은좋아요 기능 구현 github 주소https://github.com/GDGoC-3lee선택한 기능 및 구현 계획 1. 좋아요 기능-  좋아요 하트 버튼 최초 클릭 시(좋아요 등록 시) Like_Table에 좋아요가 등록되고 해당 좋아요의 liked값이 true가 된다.-  좋아요 취소 시 Like_Table에 등록되었던 좋아요의 liked값이 false가 된다.-  다시 해당 글에 좋아요를 클릭 시 좋아요의 liked값이 true가 된다.2. 마이페이지-  마이페이지 경로로 진입 시 현재 로그인한 유저의 이름, 이메일, 프로필 사진을 보여준다. 핵심코드1. 테이블 매핑ERD기반 Posts, Like_Table, Use..

[Android] 카카오뱅크 클론 코딩 (4)

이번 주차에서 제가 맡았던 부분 중 '이체 화면 텍스트 필드' 에서 새롭게 알게 된 부분도 있고 어려웠던 부분도 한 번 더 자세히 알게 된 것 같아 해당 내용을 중심으로 정리해보겠습니다. 이체 화면 텍스트 필드목표 : A 화면에서 사용자가 텍스트 필드에 입력한 값을 B 화면으로 넘어갈 때 매개변수로 담아서 보내주기구현 방법 :TransferScreen.kt (주요 코드 외 생략)@Composablefun TransferRoute( navigator: HomeNavigator) { TransferScreen( onNextClick = { receiver -> navigator.navigateToSend(receiver) // receiver 값을 전달 ..

[ Spring 심화 ] 9주차 - 스프링이란 무엇인가?

8. 스프링이란 무엇인가?8.1 스프링의 정의스프링에 대해 가장 잘 알려진 정의는 이렇다. "자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크"애플리케이션 프레임워크라이브러리/프레임워크는 특정 업무 분야나 한 가지 기술에 특화된 목표를 가지고 만들어 진다. 하지만 스프링은 특정 계층, 기술, 업무 분야에 국한되지 않고 애플리케이션 전 영역을 포괄하는 범용적ㅇ니 프레임워크다.역사스프링은 2003년에 출간된 로드 존슨의 Expert One-on-One J2EE Design and Development라는 책에서 탄생했다.이 책은 J2EE 애플리케이션 설계와 개발에 대한 책이었고 개발 전략과 기존 기술에 대한 대안을 샘플 애플리케이션 형태로 제공했다.이 책에서 강조한 전략이 "항상..

[Spring 입문] Toy Project - Team 하와수

팀원 및 저장소하은수(팀장)마이페이지 구현 리펙터링: 게시글 유저 매핑https://github.com/ha9eun이수연팔로우 기능 구현 리펙터링: 회원가입 유저 권한, 게시글 수정/삭제 권한 변경https://github.com/choubungGithub Organizationhttps://github.com/GDGoC-Sookmyung-HawaSu  선택한 기능 및 구현 계획팔로우홈화면(게시글 목록 보기 페이지)에서 작성자 옆의 'follow' 버튼을 누르면,위의 액션을 취한 로그인 유저 팔로잉 목록에 작성자가 추가되고게시글 작성자의 팔로워 목록에 로그인 유저가 추가된다.팔로우가 성공적으로 완료되면 'follow' 버튼이 'unfollow' 버튼으로 변경된다.* 자기 자신의 글에는 팔로우 버튼이 뜨지..

[ Spring 심화 ] 8주차 - AOP(3)

목차6.6 트랜잭션 속성6.7 애노테이션 트랜잭션 속성과 포인트컷6.8 트랜잭션 지원 테스트6.6 트랜잭션 속성트랜잭션을 가져올 때 파라미터로 트랜잭션 매니저에게 전달하는 DefaultTransactionDefinition의 용도가 무엇인지 알아보자.6.1.1 트랜잭션 정의트랜잭션의 동작방식에 영향을 줄 수 있는 네 가지 속성의 정의트랜잭션 전파: 트랜잭션의 경계에서 이미 진행 중인 트랜잭션이 있을 때 또는 없을 때 어떻게 동작할 것인가를 경정하는 방식을 말한다.PROPAGATION_REQUIRED진행 중인 트랜잭션이 없으면 새로 시작하고, 이미 시작된 트랜잭션이 있으면 이에 참여한다.DefaultTransactionDefinition의 트랜잭션 전파 속성PROPAGATION_REQUIRES_NEW항상 ..

[ Spring 심화 ] 7주차 - AOP(2)

분리한 트랜잭션 코드 → 기존 설계와 코드에는 영향을 주지 않는 형태로 제공되어야 함5. 스프링 AOP1. 자동 프록시 생성프록시 팩토리 빈 방식의 접근 방법의 한계부가기능이 타깃 오브젝트마다 새로 만들어지는 문제 → ProxyFactoryBean어드바이스로 해결부가기능의 적용이 필요한 타깃 오브젝트마다 거의 비슷한 내용의 ProxyFactoryBean빈 설정정보 추가해주는 부분중복 문제의 접근 방법런타임 코드 자동생성 기법을 통한 해결(프록시)JDK의 다이내믹 프록시 → 특정 인터페이스를 구현한 오브젝트에 대해 프록시 역할을 해주는 클래스를 런타임시 내부적으로 만들어줌 → 클래스 소스는 남지 않지만 타깃 인터페이스의 모든 메소드를 구현하는 클래스가 만들어짐다이내믹 프록시의 역할 → 변하지 않는 타깃으로..

[ Spring 심화 ] 6주차 - AOP(1)

6장 AOP6.1 트랜잭션 코드의 분리AOP는 IoC/DI, 서비스 추상화와 더불어 스프링의 3대 기반기술의 하나다.스프링에 적용된 가장 인기 있는 AOP의 적용 대상은 바로 선언적 트랜잭션 기능이다!서비스 추상화를 통해 많은 근본적인 문제를 해결했던 트랜잭션 경계설정 기능을 AOP를 이용해 바꿔보자.🍃 메소드 분리비즈니스 로직 코드를 사이에 두고 트랜잭션 시작과 종료를 담당하는 코드가 앞뒤에 위치함.=> 비즈니스 로직을 담당하는 코드를 메소드로 추출해서 독립시키자.🍃 DI를 이용한 클래스의 분리DI 적용을 이용한 트랜잭션 분리UserService를 구현한 또 다른 구현 클래스를 만들자.UserService를 구현한 UserServiceTx는 트랜잭션 경계설정이라는 책임을 맡고 있을 뿐이다.UserS..

[Android] 카카오뱅크 클론 코딩 (3)

카카오뱅크 클론코딩으로 화면 구성 중 중요했던 Chip 컴포넌트와 Retrofit 연결에 대해 정리해보았습니다.📝Chip 컴포넌트칩(Chip)이란?칩(Chip)은 작은 UI 요소로, 주로 선택지 제공, 필터링, 태그 지정 또는 입력된 데이터를 표시하는 데 사용칩은 라벨, 아이콘, 선택 상태 등을 포함 가능칩은 사용자가 클릭하여 선택하거나 선택 해제할 수 있는 대화형 요소로 사용@OptIn(ExperimentalLayoutApi::class)@Composablefun LoanCategoryChips() { val chipItems = listOf( "신용대출", "중신용대출", "비상금대출", "신용대출 갈아타기", "개인사업자 신용대출", "개인사업자 보증서대출", "중고..