목록전체 글 (108)
Legday
DI 컨테이너를 알기전에 IoC(Inversion of control)를 알아야 한다! 제어의 역전 IoC(Inversion of Control) 프로그램의 제어 흐름을 개발자가 직접 제어하는 것이 아니라 외부에서 관리하는것을 제어의 역전(IoC)라 한다. 💡프레임워크(Framework) 와 라이브러리(Library) - 프레임워크는 사용자가 작성한 코드를 제어하고, 실행한다(예: Junit) - 라이브러리는 개발자가 작성한 코드를 개발자가 제어하고, 흐름을 담당한다. 의존관계 주입 DI(Dependency Injection) 애플리케이션 실행 시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결 되는 것을 의존관계 주입이라 한다. 의존관계 주..
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 인프런 사이트에서 공부하면서 정리한 글입니다 !! 틀린게 있으면 댓글 부탁드립니다 스프링 역사 스프링의 이름은 J2EE(EJB)라는 겨울을 넘어 새로운 시작이라는 뜻이라고 합니다. 스프링 이전에는 EJB , Hibernate 를 썻다고 합니다. 스프링의..
💡 어떠한 프로그램을 다운로드 하는 과정에서 서버, 패키지 버전, os등등에 문제로 에러가 많이 나는 경우가 있다. 도커(Docker)를 사용하면 에러가 덜 나고 간단하게 프로그램을 다운받을 수 있다. 도커(Docker)란 ? 컨테이너 기반의 오픈소스 가상화 플랫폼이며 생태계이다 Docker 컨테이너 내에 다양한 프로그램(웹서버, DB 등)을 컨테이너로 추상화하고 프로그램의 배포 및 관리를 단순하게 해준다. 도커(Docker) 이미지란 ? 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는 데 필요한 모든것을 포함한 것이다. 즉, 소프트웨어 패키지이다. 도커(Docker) 컨테이너란 ? 도커 컨테이너는 도커 이미지에 의해 생성이되며, 프로그램을 실행하는 이미지의 인스..
💡HTTP API 처럼 JSON 데이터를 HTTP메시지 바디에 넣어서 보내거나 읽어들일때 HTTP 메시지 컨버터를 사용하면 편리하다 💡HttpMessageConverter 는 인터페이스이다. String, Json 등등의 타입으로 변환하기 떄문에 인터페이스로 구현되어 있다. 스프링 MVC에서 HTTP 메시지 컨버터 적용방법 1. HTTP 요청 : @RequestBody, HttpEntity(RequestEntity) 2. HTTP 응답 : @ResponseBody, HttpEntity(ResponseEntity) HTTP 메시지 컨버터 작동원리 HTTP 요청이 오면 스프링 내장 톰캣서버를 거쳐서 스프링 컨테이너로 HTTP 메시지가 들어온다. 이때 @RequestBody를 사용하여 HTTP의 BODY에 데..
💡 스프링에서 응답데이터를 다루는 방법은 3가지가 있다 1. 정적 리소스뷰 2. 템플릿 사용 3. HTTP 메시지 사용 1. 정적 리소스 스프링 부트는 /resources 경로 안에서 정적 리소스를 관리한다. /static 경로나 /public 등의 클래스패스에서 정적 리소스를 제공하고 모든 루트 경로는 /resources 이다. 정적 리소스는 html, css, 이미지 등의 정적인 파일을 말하는 것이다. 2. 뷰 템플릿(템플릿 엔진) 뷰 템플릿은 HTML 을 동적으로 생성하는 용도이다. 뷰 템플릿을 거쳐서 HTML 이 생성되고, 뷰가 응답을 만들어서 전달한다. 스프링 부트는 뷰 템플릿 경로를 /resources/templates 로 지정된다. ModelAndView 방식 @RequestMapping("..
💡 JSON 객체를 자바 Object로 변환하기 위해서 클래스 상단에 코드한줄을 적어주자 private ObjectMapper objectMapper = new ObjectMapper(); HttpServletRequest,Response를 이용 servlet를 이용한 방법 코드가 상당히 더럽고 길다 @PostMapping("/request-body-json-v1") public void requestBodyJsonV1(HttpServletRequest request, HttpServletResponse response) throws IOException { ServletInputStream inputStream = request.getInputStream(); String messageBody = St..
1. InputStream 사용법 서블릿을 이용한 방법이고 HttpServletRequest, HttpServletResponse 객체를 이용하여 HTTP 메시지 바디를 읽는 방법이다 @PostMapping("/request-body-string-v1") public void requestBodyString(HttpServletRequest requset, HttpServletResponse response) throws IOException { ServletInputStream inputStream = requset.getInputStream(); String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); log..
1. @RequestParam(”key”) 쿼리스트링에 있는 파라미터명을 key로 받아서 저장 @RequestMapping("/request-param-v2") public String requestParamV2( @RequestParam("username") String memberName, @RequestParam("age") int memberAge){ log.info("username={}, age={}", memberName, memberAge); return "ok"; } 파라미터명과 변수명이 같다면 key 생략 가능 @RequestMapping("/request-param-v3") public String requestParamV3( @RequestParam String username, @..