목록SpringBoot/AWS_PJ (18)
Coding Note
Q1. 스프링 시큐리티(SpringSecurity)? 인증(Authentication)과 인가(Authorization) 혹은 권한 부여 기능을 가진 프레임 워크 = 스프링 기반의 애플리케이션에서는 보안을 위한 표준 책 기반에 따라 스프링 부트 2.0 방식인 Spring Security Oauth2 Client 라이브러리를 사용해서 진행함! 스프링 부트2.0 방식은 client 인증 정보만 입력하면 된다. 1. 구글 서비스 등록 구글 서비스에서 발급된 인증 정보를 통해서 로그인 기능과 소셜 서비스 기능을 사용할 수 있으니 무조건 발급받고 시작해야 된다! 구글 클라우드 플랫폼 홈페이지 접속! Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Platf..
전 게시물 등록 화면 구현에 이어서 조회/수정/삭제 화면 및 기능을 구현해봅시다! 대규모 프로젝트 시 조회는 조회용 프레임워크를 사용함. 등록/수정/삭제 등은 SpringDataJpa를 통해 진행함. 책 속 저자는 조회 시 Querydsl을 추천한다고 한다. 이유는 다음과 같다. 1. 타입 안정성이 보장됨 2. 국내 많은 회사에서 사용 중 3. 래퍼런스가 많음 1. 조회 전체 조회를 위해 index.mustache 코드 추가 - index.mustache 게시글번호 제목 작성자 최종수정일 {{#posts}} {{id}} {{title}} {{author}} {{modifiedDate}} {{/posts}} 머스테치의 문법 사용함. 1. {{#posts}} - posts라는 Lis..
부트스트랩 이용하여 화면 구성하기! 부트스트랩, 제이쿼리 등 프론트엔드 라이브러리를 사용할 수 있는 방법은 크게 2가지가 있다. 1. 외부 CDN 사용 2. 직접 라이브러리를 받아서 사용 Q. 레이아웃 방식 - 공통역역을 별도의 파일로 분리하여 필요한 곳에서 가져다 쓰는 방식 1. 레이아웃 파일 만들기 src/main/resources/templates 디렉토리에 layout 디렉토리를 추가 생성한다. 디렉토리안에 footer.mustache, header.mustache 파일 생성 코드는 아래와 같다 - header - footer 페이지 로딩 속도를 높이기 위해 CSS는 header, JS는 footer에 두었다. js의 용량이 크면 body 부분의 실행이 늦어지기 때문에 js는 body 하단에 두어..
Q1. 템플릿 엔진 - 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어 - 자바 진영에서는 Jsp, Velocity, Freemaker, Thymeleaf 등 다양한 서버 템플릿 엔진이 존재함. 단점 - JSP/Velocity : 스프링 부트에서 권장하지 않는 템플릿 엔진 - Freemaker : 템플릿 엔진으로는 너무 과하게 많은 기능을 지원함. 높은 자유도로 인해 숙련도가 낮을수록 Freemaker안에 비즈니스 로직이 추가될 확률이 높음. - Thymeleaf : 문법이 어려움. Q2. 머스테치(mustache) - 수많은 언어를 지원하는 가장 심플한 템플릿 엔진 장점 - 문법이 다른 템플릿 엔진보다 심플 - 로직 코드를 사용할 수 없어 View의 역할과 서버의 역할이 명확하..
유지보수에 있어서 생성, 수정 시간은 중요한 정보가 된다! JPA Auditing으로 생성 시간/수정 시간 자동화하기! JPA Auditing - Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능 - 자동으로 시간을 매핑하여 데이터베이스의 테이블에 넣어줌 LocalDate - java8 이전 시간 출력은 Date/Caledar 클래스를 사용하였으나 다양한 문제들로 인해 LocalDate/LocalDateTime이 등장 1. 생성/수정 시간 추가하기 domain패키지에 클래스를 생성한다. - BaseTimeEntity package com.bs.book.springboot.domain.posts; import lombok.Getter; import org.springframewor..
등록, 수정, 조회 API 만들기! API를 만들기 위해 총 3개의 클래스가 필요하다! 1. Request 데이터를 받을 DTO 2. API 요청을 받을 Controller 3. 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service 1. Spring 웹 계층 Web Layer - 컨트롤러와 JSP/Freemaker 등의 뷰 템플릿 영역 - 필터, 인터셉터, 컨트롤러 어드바이스등 외부 요청과 응답에 대한 전반적인 영역을 이야기함. Service Layer - @Service에 사용되는 서비스 영역 - 일반적으로 Controller와 Dao의 중간 영역에서 사용됨 - @Transactional이 사용되어야 하는 영역 Repository Layer - 데이터 저장소에 접근하는 영역 DTOs - DTO(D..
스프링에서 JPA로 데이터베이스 다루기 1. domain 패키지 생성하고 posts 패키지 생성 후 클래스 인터페이스 생성 도메인(소프트웨어 요구사항)을 담을 패키지를 생성한다. 기존 MyBatis은 쿼리 매퍼를 사용하여 dto 패키지를 떠올리지만 다름. - Posts 클래스 코드 package com.bs.book.springboot.domain.posts; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import javax.persistence.*; @Getter @NoArgsConstructor @Entity public class Posts { @Id @GeneratedValue(strategy = Ge..
TMI 정보처리기사 필기시험 준비하느라... 스터디를 제대로 못했다.. 그래도 필기 결과는 합격!! 이제 스터디에 몰두해야지~ Q1. JPA 란? - 자바 표준 ORM(Object Relational Mapping) - 인터페이스로서 자바 표준 명세서 - 객체를 매핑하는 기술 - JPA를 사용하기 위해 구현체가 요구됨 - Hiberate, Eclipse, Link 등 JPA는 객체 지향 프로그래밍 언어와 관계형 데이터베이스 2개 영역을 중간에서 패러다임을 일치시켜주기 위한 기술이다. 즉, 개발자는 객체지향적으로 프로그래밍을 하고, JPA가 이를 관계형 데이터베이스에 맞게 SQL을 대신 실행한다! Q2. Spring Data JPA - Spring에서 사용하는 JPA - JPA를 사용하기 위해 구현체가 필..