SpringBoot
SpringBoot MVC 파헤치기(1)
SpringBoot MVC 파헤치기(1)
2022.02.28Spring MVC을 알아보기 전에 ServletContainer에 대해서 먼저 알아보겠습니다. ServletContainer란? 개발자가 웹서버 애플리케이션을 제작함에 있어서, 통신을 목적으로 소켓을 생성하고, port에 리스닝하는 등의 비즈니스 로직과 무관한 일을 처리해줍니다. 컨테이너는 servlet의 Life Cycle를 관리합니다. ServletContainer는 요청이 들어올 때마다 새로운 자바 스레드를 만듭니다. 이것이 동시에 여러 요청을 처리할 수 있게 되는 기반이 됩니다. Springboot에서는 web 디펜더시 를 추가하면 ServletContainer로 Tomcat이 들어오게 됩니다. Tomcat 같은 WAS는 java 파일을 컴파일해서 Servlet 객체를 만듭니다. Servlet ..
SpringBoot MVC 파헤치기 (2)
SpringBoot MVC 파헤치기 (2)
2022.02.27Spring MVC란? Spring을 활용하여 만든 애플리케이션은 Web 기반인 경우가 많습니다. 이때 Front Controller Pattern을 이용해서 만든 방식이 Spring MVC입니다. MVC는 Model, View, Controller 클래스로 분할하여 유연하고 확장성을 장점으로 갖추었습니다. Model 데이터와 비즈니스 로직을 관리 애플리케이션이 포함해야 할 데이터가 무엇인지를 정의 일반적으로 POJO로 구성 View 레이아웃과 화면을 처리 애플리케이션의 데이터를 보여주는 방식을 정의 Controller VIew와 Model 사이의 인터페이스 역할 애플리케이션 사용자의 입력에 대한 응답으로 Model 및 View를 업데이트하는 로직을 포함 Model/View에 대한 사용자 입력 및 요청을..
Springboot Dto는 많이 만들어도 될까?
Springboot Dto는 많이 만들어도 될까?
2022.02.22Dto란? Dto는 Data Transfer Object의 약자입니다. 계층 간 데이터 교환 역할을 합니다. DB에 저장되는 Entity를 감싸 Wrapper라고 생각할 수 있습니다. Entity를 클라이언트단과 연결되는 Controller에 사용할 때 문제점이 있습니다. 1. Entity의 스펙 노출 -> Entity의 모든 값이 외부에 노출 될 수 있습니다. 2. 기능에 따라 요구하는 데이터가 다름 -> signup 기능: 이름, 아이디 등등 , login 기능: 아이디, 패스워드 이러한 문제를 해결하기 위해 Dto를 사용합니다. 예를 보겠습니다. @RestController @RequiredArgsConstructor @Slf4j public class UserController { private ..
Springboot [스프링부트] Spring Sercurity Basic(4)
Springboot [스프링부트] Spring Sercurity Basic(4)
2022.02.12기존에 만들었던 Springboot 프로젝트에 SSL/HTTPS를 적용하겠습니다. 1. SSL certificate 만들기 ( cmd 창을 관리자 권한으로 실행해야 합니다.) java의 jdk가 있는 곳으로 이동합니다. where java // 명령어를 입력하면 java의 디렉터리 위치가 나옵니다. 3번째 디렉터리로 이동합니다. keytool -genkey -alias bootsecurity -storetype PKCS12 -keyalg RSA \ -keysize 2048 -keystore bootsecurity.p12 -validity 365 아래와 같이 값을 입력하고, 실행하시면 됩니다. java 디렉터리에서도 파일이 생성된 것을 확인할 수 있습니다. resources 밑에 위치합니다. 실제 운영할 ..
SpringBoot [스프링부트] Spring Security Baisc (3)
SpringBoot [스프링부트] Spring Security Baisc (3)
2022.01.27전 글에서 인증과 권한에 대해 다뤘고, 같은 권한을 가진 User는 다른 User의 리소스에 접근할 수 있었습니다. Interceptor를 통해서 인가 문제를 해결해보겠습니다. 1. Interceptor란? 인터셉터(Interceptor)는 스프링의 Spring Context(ApplicationContext) 기능입니다. 임의의 URI를 호출 시 DispatcherServlet에서 해당 Controller가 처리되기 전과 후에 발생하는 것을 처리할 수 있습니다. 즉 DispatcherServlet -> Interceptor -> Controller -> Interceptor -> ~~ 로 표현할 수 있습니다. 2. UserController 수정 @PostMapping("/character") publ..
SpringBoot [스프링부트] Spring Security Basic(2)
SpringBoot [스프링부트] Spring Security Basic(2)
2022.01.27프로젝트 개요 User는 회원 가입을 하고 로그인을 할 수 있다. User의 권한을 가진 사람만 캐릭터를 만들 수 있다. 캐릭터는 여러 개 생성 가능하다. Guest의 권한을 가진 사람은 /user과 /character에 접근이 불가능하다. 위의 요구사항을 토대로 만들겠습니다. 기본 개념들에 대한 설명은 생략하고, Security에 관한 내용만 설명하겠습니다. 1. User @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity @Getter public class User implements UserDetails { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Col..