스프링
-
HTTP(3) - API 설계 예스프링/HTTP 기본 지식 2023. 2. 5. 15:51
HTTP API 파일 목록 /files -> GET 파일 조회 /files/{filename} -> GET 파일 등록 /files/{filename} -> PUT 파일 삭제 /files/{filename} -> DELETE 파일 대량 등록 /files -> POST 회원 관리 시스템 1. POST - 신규 자원 등록 특징 (컬렉션) - 클라이언트는 등록될 리소스의 URI를 모른다 - POST는 기존에 없던 리소스를 새로 만드는 기능이기 때문에 서버가 새로 등록된 리소스 URI를 생성해준다. HTTP/1.1 201 Created Location: /members/ 100 2. PUT - 신규 자원 등록 특징 (스토어) - 클라이언트가 리소스 URI를 알고 있어야 한다. 파일 등록 /files/{filena..
-
HTTP(1) - HTTP 메서드스프링/HTTP 기본 지식 2023. 2. 5. 15:05
Http는 웹 개발에 있어서 개발자 모두가 필수적으로 알아야하는 기본 지식이다. Http 메서드 중에서 중요한 메서드들 정리 1. Get 메서드 정보를 조회할 때 사용 2. Post 메서드 회원가입, 게시글 작성 등 새로운 정보를 입력, 저장할 때 사용 3. Put 메서드 리소스를 대체, 기존에 리소스가 있으면 대체하고 리소스가 없었으면 새로 생성(리소스를 덮어버림) Post와의 다른점은 Put 메서드는 정확한 리소스를 알고 사용한다는 것. 4. Patch 메서드 리소스의 부분을 변경해준다. Put메서드와 Patch 메서드의 차이점 PUT /members/100 HTTP/1.1 Content-Type: application/json { "name" : abc "age" : 20 } 위의 리소스를 PUT ..
-
provider와 프록시스프링/HTTP 기본 지식 2023. 2. 4. 16:00
@Controller @RequiredArgsConstructor public class LogDemoController { private final LogDemoService logDemoService; private final MyLogger myLogger; // 윗 줄은 컨테이너에 요청해서 provider를 계속 만들어주게 한다. @RequestMapping("log-demo") @ResponseBody public String logDemo(HttpServletRequest request) { String requestURL = request.getRequestURI().toString(); myLogger.setRequestURL(requestURL); myLogger.log("controll..
-
웹 스코프스프링/HTTP 기본 지식 2023. 2. 4. 15:40
웹 스코프 종류 request : HTTP 요청 하나가 들어오고 나갈 때까지 유지되는 스코프, 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고, 관리된다. session : HTTP Session과 동일한 생명주기를 가지는 스코프 application : 서블릿 컨텍스트와 동일한 생명주기를 가지는 스코프 websocket : 웹 소켓과 동일한 생며주기를 가지는 스코프 request를 제외한 나머지는 웹 공부를 할 때 나중에 다시 정리하도록 하고 여기에서는 request 위주로 공부를 진행하겠다. prototype은 만들고 초기화만 관여했지만 request는 요청이 들어왔다가 나갈때까지 계속 관여한다. @Scope(value = "request") public class MyLogger { priv..
-
웹 스코프와 프록시스프링/스프링 기본이론 2023. 2. 2. 14:58
웹 스코프 종류 request : HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프로 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고 관리된다. session : HTTP Session과 동일한 생명주기를 가지는 스코프 application : 서블릿 컨텍스트와 동일한 생명주기 가지는 스코프 websocket : 웹 소켓과 동일한 생명주기를 가지는 스코프 웹 스코프중에 제일 많이 쓰이는 request에 대해서 알아볼 것이다. 나머지는 비슷하기도 하고, request가 가장 많이 쓰이는 것이기 때문이다. 스코프의 로그를 관찰하기 위해 MyLogger를 만들어준다. @Component @Scope(value = "request", proxyMode = ScopedProxyMode.TARGE..
-
프로토타입 스코프스프링/스프링 기본이론 2023. 2. 1. 23:05
빈 스코프는 빈이 생성되고부터 소멸할 때까지의 단계이다. 프로토타입 스코프는 빈을 생성한 다음에 스프링에서 관리해주는 것이 아니고, 사용자 요청이 있을 때마다 새로운 객체를 생성해서 사용자에게 넘겨주고 끝낸다. 즉, 생성되고 이후는 사용자에게 빈의 권한이 있고, 그렇기 때문에 @PreDstroy도 호출되지 않는다. 싱글톤의 경우 public class SingletonTest { @Test void singletonBeanFind() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SingletonBean.class); SingletonBean singletonBean1 = ac.getBean(Singleto..
-
어노테이션을 직접 만들기스프링/스프링 기본이론 2023. 2. 1. 22:39
@Component @Qualifier("mmainDiscountPolicy") // 오류 public class RateDiscountPolicy implements DiscountPolicy { // 생략 } 위와 같이 문자열을 잘못 입력하게 된다면 컴파일 에러로 잡기도 힘들고 오류를 발견하기 어려울 가능성이 있다. 애노테이션을 직접 만들면 이러한 실수를 방지할 수 있다. @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented @Qualifi..