Group Study (2024-2025)/Spring 입문 10

[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..

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

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

[Spring 입문] 6주차 - EC2 서버에 프로젝트를 배포해 보자

Chapter 8. EC2 서버에 프로젝트를 배포해 보자1~5장: 스프링부트를 이용한 서비스 코드 개발6~7장: 배포 환경 구성8장: 위 실습을 바탕으로 실제 서비스를 배포8.1 EC2에 프로젝트 Clone 받기EC2에 git 설치sudo yum install gitgit --version프로젝트 저장할 디렉터리 생성mkdir ~/app && mkdir ~/app/step1cd ~/app/step1※ 깃허브 폴더명이 한글일 경우[방법 1] 폴더명 영어로 바꾼 후 clone하기[방법 2] 인스턴스 인코딩 변경하기locale 확인locale 한글로 변경하기sudo vi /etc/locale.confvim locale.confLANG=ko_KR.UTF-8LC_ALL=ko_KR.UTF-8git clonegit ..

[Spring 입문] 5주차 - AWS 서버 환경을 만들어보자 - AWS RDS (7장)

데이터베이스를 다루는 것은 코드를 작성하는 것만큼이나 중요하다.-> 작은 서비스에서는 개발자가 데이터베이스를 다뤄야하기 때문※ 따라서 이번장에서는 데이터베이스를 설치하지 않고 RDS를 활용하여 데이터베이스를 다룰 예정이다.실습1. RDS 인스턴스 생성하기 1-1 엔진 옵션 1-2 설정인스턴스 식별자 / 마스터 사용자 이름 작성마스터 암호 설정 -> 기억해두어야 함 1-3 스토리지범용 SSD / 20 로 설정 1-4 연결퍼블릭 엑세스 - 예 / 추가 구성 -> 데이터베이스 포트 설정나머지는 기본 설정으로 유지 1-5 추가 구성교재에서는 데이터베이스 옵션으로 되어있는데 현재에는 추가 구성에서 설정 할 수 있다.데이터베이스 이름 설정설정이 끝나면 데이터베이스 생성 버튼 클릭하기  2. RDS 운영환경에 맞는 ..

[Spring 입문] 5주차 - AWS 서버 환경을 만들어보자 - AWS EC2

- EC2 인스턴스 생성하기- EC2 서버에 접속하기- 아마존 리눅스 1 서버 생성 시 꼭 해야하는 설정들 외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버 필수   집에 PC 24시간 구동호스팅 서비스 이용클라우드 서비스(AWS, AZURE, GCP) 이용- 인터넷(클라우드)를 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등 컴퓨팅 서비스 제공→ 비용은 호스팅 서비스나 집 PC를 이용하는 것이 저렴하지만    특정 시간에만 트래픽이 몰릴 경우 유동적으로 사양을 늘릴 수 있는 클라우드 가 유리함 클라우드의 형태Infrastructure as a Service (IaaS)- 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스- 가상머신, 스토리지, 네트워크, 운영..

[Spring 입문] 4주차 - 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (1)

스프링 시큐리티 : 막강한 인증과 인가 기능을 가진 프레임워크5.1 스프링 시큐리티와 스프링 시큐리티 Oauth2 클라이언트소셜 로그인을 사용할 경우, 로그인 구현 시 보안, 회원가입 시 본인인증, 비밀번호 찾기 등 여러 기능들을 직접 구현할 필요가 없어 서비스 개발에 집중할 수 있다.5.2 구글 서비스 등록https://console.cloud.google.com (Google Cloud Platform)에 접속 후, ‘프로젝트 선택’ 클릭 ‘새 프로젝트’ 클릭등록될 서비스의 이름 입력생성이 완료된 프로젝트를 선택하고 왼쪽 메뉴 탭을 클릭해서 ‘API 및 서비스 카테고리’로 이동사이드바 중간에 있는 ‘사용자 인증 정보’를 클릭하고 ‘사용자 인증 정보 만들기’ 클릭 ‘OAuth 클라이언트 ID’ 항목 클..

[Spring 입문] 4주차 - 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (2)

어노테이션 기반으로 개선하기📌 일반적인 프로그래밍에서 개선이 필요한 나쁜 코드는?→ 같은 코드가 반복되는 부분! ⇒ 유지보수성 ↓, 수정 반영되지 않은 반복 코드가 있으면 문제 발생IndexController에서 세션값을 가져오는 부분이 반복SessionUser user = (SessionUser) httpSession.getAttribute("user");index 메소드 외에 다른 컨트롤러와 메소드에서 세션값이 필요하면 그때마다 직접 세션에서 값을 가져와야 한다. 이 부분을 메소드 인자로 세션값을 바로 받을 수 있게 변경config.auth 패키지에 LoginUser 어노테이션 생성package com.jojoldu.book.springboot.config.auth;import java.lang.a..

[Spring 입문] 3주차 - 머스테치로 화면 구성하기

4.1 서버 템플릿 엔진과 머스테치 소개1. 템플릿 엔진 : 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어서버 템블릿 엔진 VS 클라이언트 템플릿 엔진서버 템플릿 엔진 : JSP, Freemarker서버에서 Java 코드로 문자열을 만든 뒤에 해당 문자열을 HTML로 변환하여 브라우저로 전달함.  클라이언트 템플릿 엔진 : React, Vue브라우저 위에서 작동함작성된 JS 코드가 실행되는 장소는 서버가 아닌 브라우저임. 서버에서는 json / xml 형식의 데이터만 전달, 클라이언트에서 조립2. 머스테치머스테치란 : 수많은 언어를 지원하는 가장 심플한 템플릿 엔진 장점문법이 다른 템플릿엔진보다 심플함.로직 코드를 사용할 수 없기에 View의 역할 / 서버의 역할이 명확하게 분..

[Spring 입문] 2주차 - 스프링부트에서 JPA로 데이터베이스 다뤄보기

1. JPA1) 소개현대의 웹 애플리케이션에서 관계형 데이터베이스는 빠질 수 없는 요소이다. 그렇기에 객체를 관계형 데이터베이스에서 관리하는 것이 무엇보다 중요하다.하지만 관계형 데이터베이스는 SQL만 인식할 수 있기에, 개발자가 아무리 자바 클래스를 잘 설계하여도, SQL을 통해야만 데이터베이스에 저장하고 조회할 수 있다는 번거로움이 존재한다. 또한, 어떻게 데이터를 저장할지에 초점이 맞춰진 SQL과는 반대로, 객체지향 프로그래밍 언어는  메시지를 기반으로 기능과 속성을 한 곳에서 관리하는 것이 목표이기에, 이 둘 사이에선 패러다임 불일치 문제가 발생한다.이를 해결하기 위해 JPA가 등장한다. JPA는 서로 지향하는 바가 다른 2개 영역을 중간에서 패러다임 일치를 시켜주기 위한 기술이다. 개발자는 객체..

[Spring 입문] 1주차 - 인텔리제이 환경 설정과 테스트코드

1. 인텔리제이로 스프링 부트 시작하기▷ 인텔리제이가 갖는 장점강력한 추천 기능훨씬 더 다양한 리팩토링과 디버깅 기능이클립스의 깃에 비해 훨씬 높은 자유도프로젝트를 시작할 때 인덱싱을 하여 파일을 비롯한 자원들에 대한 빠른 검색 속도HTML과  CSS, JS, XML에 대한 강력한 기능 지원자바, 스프링부트 버전업에 맞춘 빠른 업데이트 ▷ [실습] Gradle 프로젝트를 스프링 부트 프로젝트로 변경하기buildscript { ext { springBootVersion = '2.1.7.RELEASE' } repositories { mavenCentral() jcenter() // 2024년 8월 15일 서버 종료, 모든 요청은 MavenCentral로 ..