REST API JunitTest(MockMvc)
2022. 1. 27. 22:42
개발 지식/Memo
Spring 에서 Was를 실행 하지 않고 Web URL을 테스트 하는 방법 웹을 개발할 때 매번 URL을 테스트하기 위해 Tomcat과 같은 WAS를 실행하는 불편한 단계를 생략하기 위해서 스프링의 테스트 기능을 활용한다. GET 방식이 아니고, POST 등의 방식으로 지정되어있으며, JSON 형태의 데이터를 처리하는 것을 브라우저에서 개발하려면 많은 시간과 노력이 들어감 때문에 Junit과 spring-test를 활용하는 것을 권장 자세한 내용은 주석으로 기재 TicketVO.java package org.zerock.domain; import lombok.Data; @Data public class Ticket { private int tno; private String owner; private ..
MockMvc Annotation 정리
2022. 1. 26. 22:12
개발 지식/Memo
MockMvc의 @Annotation @RunWith(SpringRunner.class) @RunWith(SpringRunner.class) 테스트를 진행할 때 JUnit에 내장된 실행자 외에 다른 실행자를 실행시킴 여기서는 SpringRunner라는 스프링 실행자를 사용 즉, 스프링 부트 테스트와 JUnit 사이에 연결자 역할을 함 @WebMvcTest @WebMvcTest 여러 스프링 테스트 어노테이션 중, Web(Spring MVC)에 집중할 수 있는 어노테이션 선언할 경우 @Controller, @ControllerAdvice 등을 사용할 수 있음 단 @Service, @Component, @Repository 등은 사용할 수 없음 @Autowired @Autowired 스프링이 관리하는 빈(Be..
REST Controller 반환 타입 정리
2022. 1. 25. 21:40
개발 지식/Memo
@RestController 반환타입 JSP와 달리 순수한 데이터를 반환하는 형태이므로 다양한 포맷의 데이터 전송 가능 주로 많이 사용 형태 : 일반문자열, JSON, XML 등 produces는 MIME TYPE을 의미 일반 문자열 반환 @Controller에서는 문자열 return값이 jsp 파일의 이름으로 처리되지만, @RestController에서는 순수한 문자열로 처리 됨 SampleController.java package org.zerock.controller; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.w..
JavaBeans
2022. 1. 25. 21:36
개발 지식/JAVA 기본 지식
JavaBeans JavaBean의 정의 데이터를 표현하는 것을 목적으로 하는 자바 클래스 컴포넌트와 비슷한 의미로도 사용됨 JavaBean 규격서에 따라 작성된 자바 클래스를 가리킴 EJB(Enterprise Java Beans) 와 혼동해선 안됨 JavaBeans의 관례 클래스는 패키지화 하여야 한다. 클래스는 직렬화 되어야 한다. (클래스의 상태를 지속적으로 저장 혹은 복원시키기 위해) implements java.io.Serializable 클래스는 기본 생성자를 가지고 있어야한다. public TestClass() {} 멤버변수는 프로퍼티(Property)라 칭한다. 프로퍼티의 접근자는 private이다. 프로퍼티마다 getter/setter 가 존재해야 하며, 그 이름은 각각 get/set으로..
REST Annotation 정리
2022. 1. 25. 19:41
개발 지식/Memo
REST의 @Annotation 전송방식에 따른 Annotation 전송방식에 따른 어노테이션 작업 HTTP Method URI 예제 어노테이션 Operation Performed 등록(Create) POST /members/new @PostMapping 리소스를 가져옴 조회(Read) GET /members/{id} @GetMapping 정의된 의미가 없으면 자원을 생성 수정(Update) PUT /members/{id}+body(json데이터 등) @RequestMapping 자원을 생성하거나 업데이트 삭제(Delete) DELETE /members/{id} @DeleteMapping 자원을 삭제 예제 package org.zerock.controller; import java.util.List; i..
POJO(Plain Old Java Object)
2022. 1. 24. 18:35
개발 지식/JAVA 기본 지식
POJO Plain Old Java Object, 간단히 POJO는 말 그대로 해석을 하면 오래된 방식의 간단한 자바 오브젝트라는 말로서 Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에 반발해서 사용되게 된 용어이다. 2000년 9월에 마틴 파울러, 레베카 파슨, 조쉬 맥킨지 등이 사용하기 시작한 용어로서 마틴 파울러는 다음과 같이 그 기원을 밝히고 있다. - 위키백과 오래된 방식의 간단한 오브젝트란? 특정 '기술'에 종속되어 동작하는 것이 아닌 순수한 자바 객체를 의미 예를 들어 특정 기술을 사용할 때 특정 프레임워크만 그 기술을 지원하여, 특정 프레임워크에 직접 의존해야 하는 순간 POJO라고 할 수 없음. 특정 기술(프..
OOP(Object Oriented Programming 객체 프로그래밍) 정리
2022. 1. 24. 18:34
개발 지식/JAVA 기본 지식
객체지향 OOA(Object Oriented Analysis) : 객체 분석 OOD(Object Oriented Design) : 객체 설계 OOP(Object Oriented Programming) : 객체 프로그래밍 객체지향 키워드 클래스(Class) 오브젝트(Object) 캡슐화(Encapsulation) 상속성(Inheritance) 다형성(Polymorphism) 클래스(Class) 클래스(class) = 추상화(abstract) 클래스는 표현 대상의 특징에 대한 서술을 의미 (공통적인 특징을 서술) 추상은 사용자가 구체적인 내용을 생각하지 않고도 사용하는 기능 프로시져 추상화 : 함수 데이터 추상화 : 구조체, 배열, 포인터 attribute = data = member variables = ..
클래스 로더 (Class Loader)
2022. 1. 22. 20:37
개발 지식/JAVA 기본 지식
JVM의 클래스로더에 대해 조금 더 자세히 정리하려고 한다 JVM에서의 클래스 로더(Class Loader)의 역할 JAVA 컴파일러(javac)를 통해 변환된 Class 파일(바이트 코드)을 읽어서 메모리에 배치 클래스 로더 실행 순서 실행 순서는 로딩, 링크, 초기화 순으로 이루어 진다 로딩(Loading) .class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 만들고 메소드 영역에 저장 메소드 영역에 저장하는 데이터 종류 Class Interface Enum FQCN(Fully Qualified Class Name) (object, 함수, 변수의 계층적 구조를 모두 포함하여 표현하는 것. Java의 경우 클래스가 포함된 패키지를 의미함) String str = new String(); /..
매번 까먹는 JVM 정리
2022. 1. 22. 19:19
개발 지식/JAVA 기본 지식
매번 까먹는 것 같아서 생각난김에 정리해두려고 한다. JVM 이란? Java Virtual Machine 자바 가상 머신의 약자 Class 파일(자바 바이트 코드)을 OS에 특화된 코드로 변환하여 실행 (OS 환경에 구애받지 않고 재사용 가능하도록 중개 역할) GC(Garbage Collection)를 통해 메모리 관리 JAVA는 컴파일러 언어인데 JVM을 통해 인터프리터 방식으로 동작 JVM 기반 언어 Java, 클로저, 그루비, JRuby, Jython, Kotlin, Scala 등등.. JVM 구조 JVM 실행 순서 OS로 부터 메모리를 할당 받음 JAVA 컴파일러(javac)를 통해 JAVA 파일을 Class 파일(바이트 코드)로 변환 클래스 로더 시스템을 통해 바이트 코드를 읽음 로딩: Clas..

7장. Spring Web Security를 이용한 로그인 처리
2022. 1. 22. 13:54
개발 서적/코드로 배우는 스프링 웹 프로젝트
7장. Part07_Spring Web Security를 이용한 로그인 처리 ch30. Spring Web Security 소개 스프링 시큐리티의 기본 동작 방식 서블릿의 여러가지 필터와 인터셉터를 이용하여 처리 필터 인터셉터 서블릿에서 말하는 단순한 필터를 의미 스프링에서 필터와 유사한 역할 스프링과 무관하게 서블릿 자원 스프링의 빈으로 관리되면서 스프링의 컨텍스트 내에 속함 Dispatcher servlet의 앞단에서 정보를 처리 Dispatcher servlet에서 Handler(Controller)로 가기 전에 정보를 처리 J2EE 표준 스펙에 정의 되어 있는 기능 Spring Framework에서 자체적으로 제공하는 기능 인코딩이나 보안 관련 처리와 같은 web app의 전역적으로 처리해야 하는..