program/Java, Spring

0. Previous 이전에 우리는 순수 자바코드를 통해서 DI를 주입한 AppConfig 파일을 스프링을 사용해서 DI를 주입하도록 수정했다. AppConfig 스프링 기반으로 변경하기 package hello.core; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.discount.RateDiscountPolicy; import hello.core.member.MemberRepository; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hel..
0. Previous 저번 게시물에 순수 Java 소스만으로 요구사항에 해당하는 소스를 작정했다. 이번에는 이전에 작성한 코드가 과연 객체지향 설계 원칙을 잘 준수 했는지 확인하면서 스프링 핵심 원리를 이해해보고자 한다. 1. 새로운 할인 정책 개발 기존에 개발된 코드는 할인 정책을 정액 할인 정책을 적용해서 VIP일 경우 무조건 1000원을 할인해주는 방식이었다. 근데 갑자기 기획자가 오더니 VIP일 경우 주문 금액의 10% 할인해주는 정률 할인 정책으로 변경해달라고 한다. 이번에는 주문한 금액의 %를 할인해주는 새로운 정률 할인 정책을 추가하도록 하자. 기존에 우리는 객체 지향 설계를 잘 활용해 DiscountPolicy는 역할, FixDiscountPoliy로 구현을 했다. 이번에는 정률 할인 정책..
0. Previos 스프링의 핵심 원리 이해를 위해 순수 자바로 예제를 만들어본다. 1. 프로젝트 생성 사전 준비물 Java 17 설치 IDE: IntelliJ 또는 Eclipse 설치 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성(https://start.spring.io) 이렇게 프로젝트를 생성해서 IDE로 실행하도록 하자. 다 되었다면 src/main/java/hello/core/CoreApplication.java에 들어가 실행시켜보자. 2. 비즈니스 요구사항과 설계 이 강의해서 진행하는 비즈니스 요구사항은 아래와 같다. 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다.(미확..
객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 쉽게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점이 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 한다. (출처 :..
더보기 순수 JDBC 스프링 통합 테스트 스프링 JdbcTemplate JPA 스프링 데이터 JPA 먼저 데이터베이스의 흐름을 알고자 지금은 사용하지 않은 순수 JDBC를 활용해 기존 회원가입 및 목록 확인 소스에 JDBC를 연결해보자. 1. 순수 JDBC db는 강의에서 알려준 h2 데이터베이스를 활용했다.(https://www.h2database.com/html/main.html) 환경설정 1-1. build.gradle 파일에 jdbc, h2 데이터베이스관련라이브러리추가 implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' 1-2. resources/application.pro..
1. 회원 웹 기능 - 홈 화면 추가 1-1. 홈 컨트롤러 추가 HomeController 파일을 새롭게 생성했다. package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home(){ return "home"; } } @GetMapping("/")라는 것은 localhost:8080/ 요청시 나타내는 홈화면을 나타낸다. 1-2. 회원 관리용 홈 localhost:8080..
1. 스프링 빈(bean) 이란? 더보기 스프링(Spring) 컨테이너가 관리하는 자바 객체를 빈(Bean)이라 한다. 스프링의 특징에는 제어의 역전(IoC)이 있다. 제어의 역전이란, 간단히 말해서 객체의 생성 및 제어권을 사용자가 아닌 스프링에게 맡기는 것이다. 지금까지는 사용자가 new연산을 통해 객체를 생성하고 메소드를 호출했다. IoC가 적용된 경우에는 이러한 객체의 생성과 사용자의 제어권을 스프링에게 넘긴다. 사용자는 직접 new를 이용해 생성한 객체를 사용하지 않고, 스프링에 의하여 관리당하는 자바 객체를 사용한다. 이 객체를 '빈(bean)'이라 한다. 2. 스프링 빈(bean)을 스프링 컨테이너에 등록하는 방법 컴포넌트 스캔과 자동 의존관계 설정 자바 코드로 직접 스프링 빈 등록하기 2-..
회원 관리 예제 - 백엔드 개발 1. 비즈니스 요구사항 정리 2. 회원 도메인과 리포지토리 만들기 3. 회원 리포지토리 테스트 케이스 작성 4. 회원 서비스 개발 5. 회원 서비스 테스트 1. 비즈니스 요구사항 정리 - 데이터: 회원ID, 이름 - 기능: 회원 등록, 조회 - 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 보통 일반적인 웹 어플리케이션의 계층 구조는 아래와 같다. 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 구현 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 : 비즈니스 도메인 객체 (ex. 회원, 주쿤, 쿠폰 등등 주로 데이터 베이스에 저장하고 관리됨) 해당 예제의 클래스 의존 관계는 다음과 같다. (실선: 클래스 상속, ..
스프링 웹개발 방식 1. 정적 컨텐츠 : 파일 자체를 웹 브라우저에 전달 2. MVC와 템플릿 엔진 : server에서 html파일을 변환 후 전달 3. API : xml이나 JSON(default)으로 client에게 전달, Server끼리 통신할 때 사용 저번 시간까지 정적 컨텐츠와 MVC와 템플릿 엔진에 대해 알아보았다. 오늘은 API 방식에 대해 알아보고자 한다. 3. API API란 Application Programming Interface의 약자로, 어떤 서버의 특정한 부분에 접속해서 그 안에 있는 데이터와 서비스를 이용할 수 있게 해주는 소프트웨어 도구이다. Controller에 아래 내용을 추가로 작성한다. @ResponseBody라는 새로운 어노테이션이 등장하는데, 자세한 내용은 htt..
먼저 HTTP통신에 대해 간단히 설명하고 넘어가고자 한다. HTTP HyperText Transfer Protocol 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 protocol(통신 규약). 즉 웹상에서 네트워크로 서버끼리 통신을 할때 어떠한 형식으로 서로 통신을 하자고 규정해 놓은 "통신 형식" 혹은 "통신 구조" 라고 보면 된다. 프론트앤드 서버와 클라이언트간의 통신에 사용된다. 또한 백앤드와 프론트앤드 서버간에의 통신에도 사용된다. HTTP는 TCP/IP 기반으로 되어있다. HTTP 기본적으로 request(요청)/response(응답) 구조로 되어있다. 클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조 클라이언트와 서버의 모든 통신이 요청..
Yeni0325
'program/Java, Spring' 카테고리의 글 목록