Controller 주로 사용자의 요청을 처리한 후 지정된 뷰에 모델 객체를 넘겨주는 역할, 사용자의 요청이 진입하는 지점으로 요청에 따라 어떤 처리를 할지 결정을 Service에 넘겨줌 Client의 요청을 받았을 때 그 요청에 대해 실제 업무를 수행하는 Service를 호출하고(클라이언트가 보낸 데이터가 있다면 호출 시 전달하기 쉽게 가공), 모델...
Spring
Spring
Spring에서 액션메소드에 @ResponseBody 어노테이션이 붙으면 return 값을 그대로 화면에 전달한다.
Spring에서 컨트롤러 객체(bean)은 딱 1개만 생성되어 사용된다.
액츄에이터로 현재 등록된 빈(Bean)의 상태와 프로그램의 매핑정보 등을 볼 수 있다.
JPA란? 스프링부트는 JPA(Java Persistence API)를 사용하여 데이터베이스를 처리한다. JPA는 자바 진영에서 ORM(Object-Relational Mapping)의 기술 표준으로 사용하는 인터페이스의 모음이다. > JPA는 인터페이스이다. 따라서 인터페이스를 구현하는 실제 클래스가 필요하다. JPA를 구현한 대표적인 실제 클래스에...
엔티티와 Setter 일반적으로 엔티티에는 Setter 메서드를 구현하지 않고 사용하기를 권한다. 왜냐하면 엔티티는 데이터베이스와 바로 연결되어 있으므로 데이터를 자유롭게 변경할 수 있는 Setter 메서드의 사용은 안전하지 않다고 판단하기 때문이다. 그렇다면 Setter메서드 없이 어떻게 엔티티에 값을 저장할까 엔티티를 생성할 경우 롬복의 @Bui...
CSRF란? CSRF(cross site request forgery)는 웹 사이트 취약점 공격 방지를 위해 사용하는 기술이다. 스프링 시큐리티가 CSRF 토큰 값을 세션을 통해 발행하고 웹 페이지에서는 폼 전송시에 해당 토큰을 함께 전송하여 실제 웹 페이지에서 작성된 데이터가 전달되는지를 검증하는 기술이다.
Spring Security를 사용하면서 엔티티를 생성할 때는 한가지 주의할 점이 있다. Spring Security는 이미 User클래스가 있다. 물론 패키지명이 달라 User라는 이름을 사용할 수 있지만, 패키지 오용으로 인한 오류가 발생할 수 있기 때문에 User 대신 SiteUser라든지 다른 이름으로 생성하는 것이 낫다.
Spring Security를 사용해서 각종 api를 만들고 Postman으로 구동을 확인하려고 하면 시큐리티 사용이 안되는 것을 확인할 수 있다. 기본적으로 JSP, 타임리프가 아닌 경우 기본적으로는 클라리언트와 쿠키 공유가 안되고, 세션도 안되고, 스프링 시큐리티를 사용하지 못한다. write에 대한 api를 만들고 해당 코드를 postman에 구동...
SecurityConfig 작성시 두 로그아웃 방식 차이점 1) 이 방식은 저 url의 Post방식에서만 작동한다. 2) 이 방식은 Get, Post방식 모두를 사용할 수 있다.
스프링을 사용하면서 타임리프가 즉각즉각 반영이 안된다면 application.yml yml 파일에 해당 설정을 추가하고 동작해보자.
가끔 빈을 직접 생성해서 사용하고 싶은 경우가 있다. 우선 configuration 파일들이 모여있는 패키지에 appConfig를 만든다. 다음 @Configuration 어노테이션을 선언해주고 그 아래 빈을 선언해준다. 이렇게 만들어준 코드를 아래와 같이 적용해본다. 위와 같이 Bean으로 등록하면 기존에 이 코드를 축약할 수 있다. 여기서 주...
만약 어떠한 빈의 생명주기를 결정하고 싶을 때, 어떤 기준을 가지고 정해야될까. 코드가 다음과 같이 있다면, @RequestScope가 빈의 생명주기를 결정하는 어노테이션이다. 다양한 scope가 있지만 어떨 때에 어떤 scope를 사용해야 할까. 바로 구성하고 있는 요소중에 제일 짧은 것을 기준으로 scope를 결정하면 된다.
Spring Security + JWT