프로젝트/스프링 부트와 AWS로 혼자 구현하는 웹 서비스 9

구글 소셜로그인 구현 - 2

프로젝트 구현 user 패키지 생성(import 생략) @Getter @NoArgsConstructor @Entity public class User extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name; @Column(nullable = false) private String email; @Column private String picture; @Enumerated(EnumType.STRING) @Column(nullable = false) private Role role; @Builder public..

구글 소셜로그인 구현 - 1

https://console.cloud.google.com/ Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 위 링크로 접속한다. 그리고 프로젝트를 생성해준다. 나는 이미 test라는 이름의 프로젝트가 하나 있다. 새 프로젝트를 눌러 프로젝트를 하나 만들어준다. 프로젝트를 만들었다면, API 및 서비스 -> 사용자 인증정보 -> 동의화면 구성 -> OAuth 클라이언트 ID 순서대로 클릭해서 인증정보를 만들어준다. 승인된 리디렉션 URI는 http://localhost:8080/login/oauth2/code/google 을 입력해준다. 스프링 부트 2 버전의 시큐리티에서는 기본적으로 {도메인}/login/oauth2/code/{소셜서비스코드}..

수정, 삭제 화면 만들기

posts-update.mustache 생성 {{>layout/header}} 게시글 수정 글 번호 제목 작성자 내용 {{post.content}} 취소 수정 완료 삭제 {{>layout/footer}} 머스테치 문법을 써서 value에 {{posts.변수명}}을 넣어줬다. readonly를 사용하면 읽기만 가능하고 수정이 불가능하다. index.js에 update, delete function추가 var main = { init : function () { var _this = this; $('#btn-save').on('click', function () { _this.save(); }); $('#btn-update').on('click', function () { _this.update(); });..

전체 조회 화면 만들기

index.mustache에 다음과 같이 목록 출력 영역을 추가 게시글번호 제목 작성자 최종수정일 {{#posts}} {{id}} {{title}} {{author}} {{modifiedDate}} {{/posts}} {{#posts}} - posts라는 Lists를 순회한다. - java의 for문과 동일하다고 생각하면 된다. {{id}}등의 {{변수명}} - List에서 뽑아낸 객체의 필드를 사용한다. PostsRepository에 쿼리 추가 public interface PostsRepository extends JpaRepository { @Query("SELECT p FROM Posts p ORDER BY p.id DESC") List findAllDesc(); } SpringDataJpa에서 ..

게시글 등록화면 만들기

부트스트랩과 제이쿼리 등 프론트엔드 라이브러리를 사용할 수 이쓴 방법은 크게 2가지가 있다. 1. 외부 CDN 사용 2. 직접 라이브러리 다운받아서 사용 외부 CDN을 사용하는게 간단하니 이걸로 한다. 2개의 라이브러리 부트스트랩과 제이쿼리를 index.mustache에 추가해야한다. 하지만, 여기서는 바로 추가하지 않고 레이아웃 방식으로 추가한다. -> 레이아웃 방식이란 공통 영역을 별도의 파일로 분리하여 필요한 곳에서 가져다 쓰는 방식을 이야기한다. 부트스트랩과 제이쿼리는 머스테치화면 어디에서나 필요하다. 매번 라이브러리를 머스테치 파일에 추가하는 것은 귀찮은 일이다. layout 디렉토리를 추가로 생성하고 footer와 header를 생성한다. 그리고 index.mustache header와 foo..

머스테치로 화면 구성

머스테치는 수많은 언어를 지원하는 가장 심플한 템플릿엔진. 머스테치는 다른 템플릿엔진과 다르게 인텔리제이 커뮤니티버전에서도 설치가능한 플러그인이 있음. build.gradle에 머스테치 스타터 의존성 등록 compile('org.springframework.boot:spring-boot-starter-mustache') index.mustache 를 templates아래에 생성 웹페이지를 작성하고 indexController생성 @Controller public class indexController { @GetMapping("/") public String index(){ return "index"; } } 머스테치 스타터 덕분에 문자열을 반환할 때 앞의 경로와 뒤의 파일 확장자는 자동으로 지정된다. ..

테스트코드 작성

- 패키지 명은 웹사이트 주소의 역순 com.jojoldu.book.springboot 패키지를 만든다. - Application 클래스를 만든다. @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } @SpringBootApplication은 스프링 부트의 자동설정, 스프링 bean읽기와 생성을 모두 자동으로 설정해준다. @SpringBootApplication의 위치부터 설정을 읽어 나가기 때문에 프로젝트의 최상단에 위치하는 것이 좋다. -내장 WAS의 장점 : 외장 WAS를 쓰면 WAS의 종류와 버전..

인텔리제이에서 깃허브 연결

[command + shift + A]를 사용해 Action 검색창을 열어 다음과 같이 share project on github를 검색한다. - 프로젝트 이름을 깃허브 저장소와 같은 이름을 사용한다. - 로그인을 한다. - 처음에 커밋을 묻는 질문엔 no를 선택한다. - 커밋을 위한 팝업창에서 .idea 디렉토리는 커밋하지 않는다. 이는 인텔리제이에서 프로젝트 실행시 자동으로 생성되는 파일들이다. 깃허브에 올리기에는 불필요하다. - .idea 폴더를 앞으로의 모든 커밋대상에서 제외되도록 설정하기 위해 gitignore에 .idea를 입력해준다. - gitignore파일도 커밋하고 푸쉬해서 깃허브에 넣어준다.

build.gradle에서 스프링 부트 설정

동아리에서 본격적으로 프로젝트를 하기전에 웹서비스 간단한거 하나 구현해보고 싶어서 이 책을 골랐다. 다음과 같은 환경에서 실행한다. intellij java 8(jdk 1.8) gradle 4.8 springboot 2.1.7 java 8을 써야 무료로 배포할 수 있다고 한다. 처음에 gradle 7이랑 java 17로 프로젝트 진행하다가 중간에 막히길래 gradle 4.8로 설정하고나서 했는데 또 오류가 떴다. 구글링을 해보니 자바17버전이랑 호환성이 안 맞아서 생기는 오류인 거 같아서 java도 8버전으로 바꿔주었더니 해결됐다. 스프링 이니셜라이저(start.spring.io)는 사용하지 않고 다음과 같이 build.gradle설정했다. buildscript { ext { springBootVersi..