본문 바로가기

FrameWork/Spring15

로그인 기능 개선 어노테이션 기반으로 개선 세션값을 가져오는 부분은 필요할때마다 불러와야한다. 이부분을 어노테이션으로 생성해서 개선해보자 @LoginUser 어노테이션 생성 @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) public @interface LoginUser { } @Target(ElementType.PARAMETER) 이 어노테이션이 생성될 수 있는 위치를 지정 PARAMETER로 지정했으니 메소드의 파라미터로 선언된 객체에서만 사용할 수 있음 이 외에도 클래스 선언문에 쓸 수 있는 TYPE 등이 있음 @interface 이 파일을 어노테이션 클래스로 지정 LoginUser라는 이름을 가진 어노테이션이 생성되었다고 보면 됨 LoginUs.. 2021. 8. 21.
스프링 시큐리티/ OAuth2.0 로그인 기능 구현 스프링 시큐리티(Spring Security)는 막강한 인증(Authentication)과 인가(Autorization(혹은 권한부여)) 기능을 가진 프레임워크 이다. 스프링 기반의 애플리케이션에서의 보안을 위한 표준이라고 보면 된다. application-oauth.yml 파일 생성후 설정 spring: security: oauth2: client: registration: google: client-id: 클라이언트 ID client-secret: 클라이언트 보안 비밀 scope: profile,email application.yml 파일 .gitignore user 패키지에 User Entity 생성 @Getter @NoArgsConstructor @Entity public class User { .. 2021. 8. 21.
게시글 등록 화면 {{>layout/header}} 스프링 부트로 시작하는 웹 서비스 {{>layout/footer}} var main = { init: function () { var _this = this; $('#btn-save').on('click', function () { _this.save(); }); }, save: function () { var data = { title: $('#title').val(), author: $('#author').val(), content: $('#content').val() }; $.ajax({ type: 'POST', url: '/api/v1/posts', dataType: 'json', contentType: 'application/json; charset=utf-8'.. 2021. 8. 21.
머스테치 먼저 서버 템플릿 엔진과 클라이언트 템플릿 엔진의 차이점에 대해 간단히 알아보자 서버 템플릿 엔진 (JSP, Freemarker 등) 클라이언트 템플릿 엔진(React, Vue 등) 흔히 이야기하는 Vue.js나 React.js를 이용한 SPA(Single Page Application)는 브라우저에서 화면을 생성합니다. 즉, 서버에서 이미 코드가 벗어난 경우 입니다. 그래서 서버에서 Json 혹은 Xml 형식의 데이터만 전달하고 클라이언트에서 조립함. 최근 리액트나 뷰와 같은 자바스크립트 프레임워크(리액트는 라이브러리 일수도..)에서 서버 사이드 렌더링(SSR:Sever Side Rendering)을 지원하는 모습을 볼수 있다. 머스테치란 머스테치(https://mustache.github.io/)는 .. 2021. 8. 21.
JPA Auditing으로 생성시간/수정시간 자동화하기 Java8부터 LocalDate와 LocalDateTime이 등장 기존의 날짜 타입인 Date의 문제점을 제대로 고친 타입이라 Java8일 경우 무조건 써야한다고 생각하면 됨 Date와 Calendar 클래스의 문제점 불변(변경이 불가능한) 객체가 아님 멀티스레드 환경에서 언제든 문제가 발생할 수 있음 Calendar는 월(Month) 값 설계가 잘못되었음 10월을 나타내는 Calendar.OCTOBER의 숫자 값은 '9' 당연히 10이라 생각했던 개발자들에게는 큰혼란이 있었음 기존엔 JodaTime이라는 오픈소스를 사용해서 문제점들을 피했고, Java8에선 LocalDate를 통해 해결함 LocalDate와 LocalDateTime이 데이터베이스에 제대로 매핑되지 않는 이슈가 Hibernate 5.2... 2021. 8. 20.
등록/수정/조회 API API를 만들기 위해 필요한 클래스 Request 데이터를 받을 Dto(Data Transfer Object) API 요청을 받을 Controller 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service Service에서 비지니스 로직을 처리하는게 아닌 트랜잭션, 도메인 간 순서 보장의 역할만 함 Web Layer 흔히 사용하는 컨트롤러(@Controller)와 JSP/Freemarker 등의 뷰 템플릿 영역 이외에도 필터(Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역을 이야기 Service Layer @Service에 사용되는 서비스 영역 일반적으로 Controller와 Dao(Data Access Object)의 중간 .. 2021. 8. 19.