전체 글
-
제어의 역전, ApplicationContextspring/스프링 입문 주차 2024. 1. 22. 20:59
이전 글에서 DI패턴에 대해서 알아봤다. 외부에서 만들어진 객체를 주입받는 것으로 느슨한 결합 즉, 유연한 코드를 만들 수 있었다. 그런데 '외부'라는 것은 대체 어디일까? IoC Container 와 Bean Bean : 스프링이 관리하는 객체 IoC Container : 관리하는 객체들이 모여있는 컨테이너 @Component 어노테이션을 달아주면 해당 클래스를 스프링 빈에 등록한다. (빈을 등록할 땐 클래스 이름에서 첫글자를 소문자로 변경한 상태 그대로 저장된다.) 앱이 기동할 때 그 클래스들을 모두 객체화 하여 IoC Container 에 저장하고, 그것들이 필요한 위치에 주입한다. 스프링 부트를 사용하지 않았다면, 프로젝트 최상단 폴더 위치에 Config 클래스를 생성하여 @Configuratio..
-
IoC Container 와 Beanspring/스프링 입문 주차 2024. 1. 22. 20:57
IoC, DI 는 객체지향의 SOLID 원칙 그리고 GoF 의 디자인 패턴과 같은 설계 원칙 및 디자인 패턴이다. 이 둘을 더 자세하게 구분해 보자면, IoC는 설계 원칙에 해당하고 DI는 디자인 패턴에 해당한다. 좋은 코드란 무엇일까? - 논리가 간단해야 한다. - 중복을 제거하고 표현을 명확하게 해야한다. - 코드를 처음 보는 사람도 쉽게 이해하고 수정할 수 있어야 한다. - 의존성을 최소화 해야 한다. - 새로운 기능을 추가 하더라도 크게 구조의 변경이 없어야 한다. 이렇듯 좋은 코드를 작성하기 위해서는 신경써야 할 부분이 정말 많다. 따라서 Spring은 개발자가 Java를 사용하여 쉽게 좋은 코드를 작성할 수 있도록 도와주는 역할을 해준다. IoC, DI는 좋은 코드 작성을 위한 Spring의 ..
-
JDBC란 무엇일까?spring/스프링 입문 주차 2024. 1. 18. 17:56
애플리케이션 서버와 데이터베이스는 어떻게 소통할까? 애플리케이션 서버에서 DB에 접근하기 위해서는 여러가지 작업이 필요하다. 1. 우선 DB에 연결하기 위해 커넥션을 연결해야 한다. 2. SQL을 작성한 후 커넥션을 통해 SQL을 요청한다. 3. 요청한 SQL에 대한 결과를 응답 받는다. 기존에 사용하던 MySQL 서버를 PostgreSQL 서버로 변경한다면 무슨일이 발생할까? - MySQL과 PostSQL은 커넥션을 연결하는 방법, SQL을 전달하는 방법, 결과를 응답받는 방법 모두 다를 수 있다. - 따라서 애플리케이션 서버에서 작성했던 DB 연결 로직들을 전부 수정해야 한다. - 이러한 문제를 해결하기 위해 JDBC 표준 인터페이스가 등장했다. - JDBC는 Java Database Connecti..
-
HTTP 데이터를 객체로 처리하는 방법spring/스프링 입문 주차 2024. 1. 18. 12:03
@ModelAttribute POST http://localhost:8080/hello/request/form/model // [Request sample] // POST http://localhost:8080/hello/request/form/model // Header // Content type: application/x-www-form-urlencoded // Body // name=Robbie&age=95 @PostMapping("/form/model") @ResponseBody public String helloRequestBodyForm(@ModelAttribute Star star) { return String.format("Hello, @ModelAttribute. (name = %s, ..
-
PathVariable과 ReqestParamspring/스프링 입문 주차 2024. 1. 18. 11:36
Client 즉, 브라우저에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보낼 수 있다. - 서버에서는 이 데이터를 받아서 사용해야하는데, 데이터를 보내는 방식이 한 가지가 아니라 여러가지가 있기 때문에 모든 방식에 대한 처리 방법을 학습해야한다. Path Variable 방식 GET http://localhost:8080/hello/request/star/Robbie/age/95 - 서버에 보내려는 데이터를 URL 경로에 추가할 수 있다. - /star/Robbie/age/95 // [Request sample] // GET http://localhost:8080/hello/request/star/Robbie/age/95 @GetMapping("/star/{name}/age/{age}") @Resp..
-
스프링에서 Jackson 형태로 반환하는 법spring/스프링 입문 주차 2024. 1. 18. 09:59
자바는 직접적으로 Jackson 문법을 가지고 있지 않기 때문에, 직접적으로 Json형태로 반환하고 싶다면 아래와 같은 String형태로 반환해야 한다. public String helloStringJson() { return "{\"name\":\"Robbie\",\"age\":95}"; } 객체를 반환하면 자동으로 json 형태로 반환 해 주기도 한다. public Star helloClassJson() { return new Star("Robbie", 95); } 객체를 반환하는 것이 당연히 더 편해보이지만, 둘다 사용할 일이 있다고 하니 기억하도록 하자. Object 타입을 json 타입으로 변환하는 방법 @Test @DisplayName("Object To JSON : get Method 필요"..
-
Controller 이해하기spring/스프링 입문 주차 2024. 1. 17. 19:28
로그인 페이지 GET /user/login login 페이지 로그아웃 처리 GET /user/logout "/" 으로 redirect 회원 가입 페이지 GET /user/signup signup 페이지 회원 가입 처리 POST /user/signup "/" 으로 redirect 만약에 우리가 Servlet객체를 만들어서 위 API를 만들어야 한다면, 이렇게 코드를 짤 수 있다. (1) Servlet Code @WebServlet(urlPatterns = "/user/login") public class UserLoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletRespo..
-
스프링 MVC란?spring/스프링 입문 주차 2024. 1. 17. 18:05
MVC Model - 데이터와 비즈니스 로직을 담당 - 데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행한다. View - 사용자 인터페이스를 담당 - 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현한다. Controller - Model과 View 사이의 상호작용을 조정하고 제어한다. - 사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트 한다. Spring MVC란? Spring Web MVC는 Servlet API를 기반으로 구축된 독창적인 웹 프레임워크로, 처음부터 SpringFramework에 포함되어 왔으며, 정식 명칭인 "Spring Web MVC"는 소스 모듈(spring-webmvc)의 이름에서 따왔으나, "Spring MV..