썸네일 [JAVA 객체지향프로그래밍] 다형성 이 글은 패스트 캠퍼스 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 강의를 듣고 공부한 내용을 바탕으로 정리한 글입니다. 1. 다형성 다형성(polymorphism)이란 '여러 개의 형태를 갖는다'라는 의미입니다. 즉, 하나의 코드가 여러 자료형으로 구현되어 실행되는 것을 말합니다. 따라서 같은 코드에서 자료형에 따라 다른 실행 결과가 나옵니다. 이는 정보 은닉과 상속과 함께 객체지향 프로그래밍의 가장 큰 특징 중 하나이자 장점입니다. 다형성을 잘 활용하면 유연하고, 확장성있고, 유지보수가 편리한 프로그램을 만들 수 있습니다. 예시로 동물 클래스를 상속받는 인간, 호랑이, 독수리 클래스를 만들어보겠습니다. class Animal { public void move() { System...
썸네일 [Spring MVC] 컨트롤러의 Exception 처리 이 글은 코드로 배우는 스프링 웹 프로젝트(남가람북스, 구멍가게 코딩단)을 읽고 공부한 내용을 바탕으로 정리한 글입니다. 스프링 MVC에서 Controller를 작성할 때 Exception을 처리하는 방식은 크게 두가지 방식으로 처리합니다. @ExceptionHandler와 @ControllerAdvice를 이용한 처리 @ResponseEntity를 이용하는 예외 메시지 구성 1. @ControllerAdvice AOP(Aspect-Oriented-Programming) 방식을 이용하여 공통적인 예외사항에 대해서는 별도로 @ControllerAdvice를 이용해서 분리하는 방식입니다. 💡 AOP(Aspect-Oriented-Programming)이란? '핵심적인 로직은 아니지만 프로그램에서 필요한 공통적..
썸네일 [Spring MVC] 파일업로드 처리 이 글은 코드로 배우는 스프링 웹 프로젝트(남가람북스, 구멍가게 코딩단)을 읽고 공부한 내용을 바탕으로 정리한 글입니다. 1. commons-fileupload 라이브러리 추가 commons-fileupload commons-fileupload 1.3.1 2. dispatcher-servlet.xml 설정 dispatcher-servlet.xml은 스프링 MVC의 특정한 객체(Bean)을 설정해서 파일을 처리합니다. 파일 업로드를 할 때는 id가 multipartResolver인 객체를 설정합니다. 3. views/sample/exUpload.jsp 작성 4. 컨트롤러 작성 @GetMapping("/exUpload") public void exUpload() { log.info("----- exUploa..
썸네일 [Spring MVC] Controller 이 글은 코드로 배우는 스프링 웹 프로젝트(남가람북스, 구멍가게 코딩단)을 읽고 공부한 내용을 바탕으로 정리한 글입니다. Controller는 개발자가 작성하는 클래스입니다. 실제 Request를 처리하는 로직을 작성하게 됩니다. 스프링 MVC는 어노테이션을 중심으로 구성되는데, @Controller 어노테이션과 @RequestMapping 어노테이션 사용법을 예제를 통해서 공부해보겠습니다. 1. @Controller와 @RequestMapping 예제로 controller 패키지에 SampleController 클래스를 다음과 같이 작성해줍니다. import lombok.extern.log4j.Log4j; import org.springframework.stereotype.Controller; impo..
썸네일 [Spring MVC] 기본 구조 이 글은 코드로 배우는 스프링 웹 프로젝트(남가람북스, 구멍가게 코딩단)을 읽고 공부한 내용을 바탕으로 정리한 글입니다. 1. 프로젝트 실행 과정 [Spring] Spring MVC Project 생성하기(IntelliJ) 이 글은 더블에스 Devlog 블로그를 참고하여 정리한 내용을 바탕으로 작성한 글입니다. IntelliJ에서 Spring MVC Project 생성하기 - 더블에스 Devlog IntelliJ에서는 STS(Spring Tool Suite)처럼 Spring MVC Project를 생 eunbin00.tistory.com 기본적으로 프로젝트를 생성하고 정상적으로 실행되었다면 톰캣 서버 구동 시, 아래 이미지처럼 로그가 찍히는 것을 볼 수 있습니다. 이 로그를 하나씩 보면서 어떤 과정을 통..
썸네일 [Spring] MyBatis와 스프링 연동 (+log4jdbc) 이 글은 코드로 배우는 스프링 웹 프로젝트(남가람북스, 구멍가게 코딩단)을 읽고 공부한 내용을 바탕으로 정리한 글입니다. 1. MyBatis MyBatis는 SQL 매핑 프레임워크입니다. 개발자들이 JDBC 코드의 복잡하고 지루한 작업을 피하는 용도로 사용합니다. 전통적이 JDBC 프로그램의 경우, 직접 Connection을 맺고 마지막에 close()를 해주어야 하고, PreparedStatement를 직접 생성하고 처리해주어야 합니다. 하지만, MyBatis의 경우, 자동으로 Connection close()를 해주고, MyBatis 내부적으로 PreparedStatement를 처리해줍니다. 그리고 #{prop}처럼 속성을 지정하면 내부적으로 자동으로 처리합니다. 아래는 JDBC를 이용해 작성한 코드..
썸네일 [Spring] JDBC(MySQL) 연결 이 글은 코드로 배우는 스프링 웹 프로젝트(남가람북스, 구멍가게 코딩단)을 읽고 공부한 내용을 바탕으로 정리한 글입니다. 책에서는 oracle을 쓰고 있는데, M1에서는 오라클을 도커 위에 올려서 사용해야해서,, 저는 MySQL을 사용하겠습니다.. 1. MySQL 설치 https://dev.mysql.com/downloads/mysql/ 에 들어가서 MySQL을 다운로드해줍니다. MySQL :: Download MySQL Community Server Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise L..
썸네일 [Spring] 의존성 주입(DI) 이 글은 코드로 배우는 스프링 웹 프로젝트(남가람북스, 구멍가게 코딩단)을 읽고 공부한 내용을 바탕으로 정리한 글입니다. 의존성 주입은 스프링 프레임워크의 가장 큰 특징이라고 말할 수 있습니다. 1. 의존성 주입(DI) 의존성(Dependency)란, 하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것을 의미합니다. 예시로 Restaurant 객체가 제대로 역할을 하려면 Chef 객체가 꼭 필요한 경우를 들 수 있습니다. 주입(Injection)은 말 그대로 외부에서 '밀어 넣는 것'을 의미합니다. 즉, 의존성 주입은 어떤 객체가 역할을 하기 위해 필요한 객체를 외부에서 밀어넣는 것으로 생각할 수 있습니다. 그렇다면 왜 외부에서 객체를 주입하는 방식이 필요한 것일까요? 그 이유는 당연히 '..
썸네일 [JAVA 객체지향프로그래밍] 오버라이딩과 가상메서드 이 글은 패스트 캠퍼스 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 강의를 듣고 공부한 내용을 바탕으로 정리한 글입니다. 1. 메서드 재정의(overriding) 오버라이딩이란, 상속 관계에 있는 부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 같은 시그니처를 갖는 메서드로 다시 정의하는 것입니다. cf. 오버로딩은 서로 다른 시그니처(함수 정의 부분)를 갖는 메서드들을 하나의 이름을 정의하는 것입니다. 자식 클래스는 부모 클래스의 private 멤버를 제외한 모든 메서드를 상속받는데, 상속받은 메서드를 그대로 사용할 수도 있고, 재정의하여 사용할 수도 있습니다. * 오버라이딩의 조건 (참고: http://www.tcpschool.com/java/java_inheritance_..
썸네일 [Spring MVC] IntelliJ에서 Project 생성하기 이 글은 더블에스 Devlog 블로그를 참고하여 정리한 내용을 바탕으로 작성한 글입니다. IntelliJ에서 Spring MVC Project 생성하기 - 더블에스 Devlog IntelliJ에서는 STS(Spring Tool Suite)처럼 Spring MVC Project를 생성하는 방법이 따로 존재하는 것 같지 않다. 구글링을 통해 참고한 내용들을 바탕으로 직접 IntelliJ에서 Spring Mvc Project를 생성하는 과정을 walbatrossw.github.io 오늘은 인텔리제이에서 Spring MVC 프로젝트를 생성하고 초기 설정하는 과정을 정리해보려 합니다. 스프링 프로젝트 초기 세팅에 대해 찾아보니 대부분의 자료들이 이클립스를 바탕으로 설명하는 글과 영상들이 많았습니다. 저는 인텔리제..
썸네일 [JAVA 객체지향프로그래밍] 상속 이 글은 패스트 캠퍼스 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 강의를 듣고 공부한 내용을 바탕으로 정리한 글입니다. 객체지향 프로그래밍의 핵심인 상속 개념에 대해서 살펴보도록 하겠습니다. 1. 클래스 상속 클래스 상속이란, 새로운 클래스를 정의 할 때, 이미 구혀노딘 클래스를 상속(inheritance)방아서 속성이나 기능을 확장하여 클래스를 구현하는 것을 말합니다. 이때, 새로 구현되는 상속받는 클래스는 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스이어야 합니다. 이때에 상속하는 클래스를 상위 클래스, parent 클래스, base 클래스, super 클래스라고 부르며, 상속받는 클래스를 하위 클래스, child class, derived class, subclass..
썸네일 [JAVA 객체지향프로그래밍] static과 싱글톤 패턴 이 글은 패스트 캠퍼스 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 강의를 듣고 공부한 내용을 바탕으로 정리한 글입니다. 1. static 변수 static 변수는 여러 인스턴스가 공유할 수 있는 변수입니다. 서로 다른 여러개의 인스턴스들이 공통으로 사용하는 변수가 필요한 경우, static 변수를 사용할 수 있습니다. 예를 들어, 학생마다 새로운 학번을 생성하거나 카드회사에서 카드를 새로 발급할 때마다 새로운 카드 번호를 부여해야할 때 static 변수를 사용해야겠습니다. 인스턴스가 생성될 때 만들어지지 않고, 프로그램이 처음 메모리에 로딩될 때 메모리를 할당받습니다. 클래스 변수, 정적 변수라고도 합니다. (cf. 인스턴스 변수) 인스턴스 생성과 상관없이 사용 가능하므로 클래스 ..