프론트엔드로써 백엔드에 대해 당연히 이해해야 한다고 생각한다.Django와 node.js를 사용할 줄 알지만, 역시 대세는 스프링인 듯..현업에서도 스프링이 필수가 되었기에 스프링에 대한 기본 상식과 앞으로 프로젝트에서도 스프링을 이용해 서버를 구축하기 위해 스프링을
정적 컨텐츠 파일을 그대로 웹으로 보내 주는 것MVC / 템플릿 엔진html을 프로그래밍 해서 동적으로 바꿔서 보내 주는 것API JSON 데이터 포맷으로 보내서 사용하는 것원하는 파일을 src/main/resources/static/00.html 로 생성한다.loca
프로젝트를 생성해보며 스프링 구조에 대해서 알아보자데이터 : 회원ID,이름 기능 : 회원 등록, 조회아직 데이터 저장소가 선정되지 않았음 (DB)컨트롤러 : 웹 MVC의 컨트롤러 역할서비스 : 핵심 비즈니스 로직 구현리포지토리 : DB에 접근, 도메인 객체를 DB에 저
앞선 내용에서 회원 리포지토리를 생성했었다. 개발한 기능을 테스트하여 문제없이 돌아가는지 확인해본다.자바에서는 테스트를 위해 JUnit이라는 프레임워크를 사용한다. 파일의 위치는 main 안이 아닌 test에서 시작된다.파일명은 main에서 만든 클래스와 동일하게 하고
[Spring 입문] - 5. 서비스 로직, 테스트
컴포넌트 스캔과 자동 응답관계 설정자바 코드로 직접 스프링 빈 등록하기 회원 컨트롤러가 회원서비스와 리포지토리를 사용할 수 있게 의존관계를 준비해보자 @Controller : 컨트롤러를 스프링 빈으로 등록@Autowired : 생성자에 있으면 스프링이 연관된 객체를 스
지금까지 만들었던 로직들을 이용해서 MVC 로 만들어보자 localhost:8080/ 으로 접근했을 때 아래와 같은 페이지가 나오게 한다HomeController 를 생성해 get('/') 요청이 들어왔을 때, 정적인 페이지 home.html를 반환한다.회원 가입 버튼
지금까지의 데이터는 spring 내에서 사용했었다. 즉 서버를 끄게 되면 사라지는 데이터이기 때문에 db를 생성해보자DB는 사용성이 편리한 h2 를 사용할 것이다.https://www.h2database.com/html/main.html 에서 다운로드 bin
Spring 기초편 강의를 보면서 스프링프레임 워크를 사용해보며 사용법을 알 수 있었다.기본편을 통해 스프링이 어떤 원리로 돌아가는지, 왜 쓰는지 이해해보자 스프링을 사용하지 않았을 때, 어떤 방법으로 흐름이 흘러가는지 이해해 보자프로젝트를 생성한다. 개발 환경을 세팅
할인 정책이 변경되었다. 고정 금액이 아닌 금액당 할인하는 방법으로 변경하고 싶다.DiscountPolicy 인터페이스를 구현한 RateDiscountPolicy를 추가해준다.테스트는 잘 작동한다. 이 할인 정책을 애플리케이션에서 적용하고 싶다.앞 장에서 만들었던 구현
ApplicationContext를 스프링 컨테이너라고 한다.XML 기반으로 만들 수도 있고, 애노테이션 기반으로도 만들 수 있다.new AnnotationConfigApplicationContext(AppConfig.class)스프링 컨테이너 생성하기AppConfig
싱글톤 이라는 디자인 패턴에 대해서 들어 봤을거다 (못들어봤다 사실 ㅎ)싱글톤 패턴이 무엇이고, 왜 이 패턴을 적용해야만 할까?우리가 만들었던 DI 컨테이너인 AppConfig는 요청이 있을 때마다 새로운 객체를 생성한다.이 방법은 메모리 낭비가 심해지게 된다. 해결방
싱글톤 이라는 디자인 패턴에 대해서 들어 봤을거다 (못들어봤다 사실 ㅎ)싱글톤 패턴이 무엇이고, 왜 이 패턴을 적용해야만 할까?우리가 만들었던 DI 컨테이너인 AppConfig는 요청이 있을 때마다 새로운 객체를 생성한다.이 방법은 메모리 낭비가 심해지게 된다. 해결방
지금까지 스프링빈을 등록할때는 @Bean 을 이용해 설정 정보에 직접 등록하였다.여러개의 빈을 등록하기 귀찮기 때문에 스프링은 자동으로 등록해주는 컴포넌트 스캔이라는 기능을 제공한다.@Autowired 자동으로 의존관계가 주입되는 기능도 있다.새로운 AppConfig파
의존관계 주입 방법은 크게 4가지가 있다.생성자 호출시점에 딱 1번만 호출되는게 보장된다.불변,필수의 의존관계에서 사용된다.생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동 주입된다.setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해서 의존관계
객체의 초기화와 종료작업이 필요할 때가 있다. 언제 어떤 방법으로 하는지 알아보도록 하자예제로 네트워크에 연결이 된다 시점에 connect()를 호출해 연결을 하고애플리케이션이 종료되면 disconnect로 연결을 끊으려고 한다.테스트 파일결과 =>url 정보가 없이
스프링 빈은 기본적으로 싱글톤 스코프라고 지금껏 배워왔다. 스코프는 빈이 존재할 수 있는 범위를 뜻한다.스프링은 싱글톤 스코프를 포함해 여러 스코프를 지원한다.싱글톤 스코프 : 기본 스코프로, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다.프로
스프링부트와 JPA를 사용해보며 Spring에 익숙해져보자사실 이 편은 따라치며 활용하는 방법을 깨우치는데만 집중해보고, 이걸 다 보면 다시 스프링 핵심원리를 보면서 이해하도록 한다.역시나 스프링 부트 스타터를 이용해 스프링을 시작한다.https://start
회원 / 상품 / 주문 순으로 구현을 할 예정이다. @Repository : 스프링 빈으로 등록@PersistenceContext : 엔티티 매니저 (EntityManager) 주입@PersistenceUnit : 엔티티 메니터 팩토리 주입@Transactional :
em.merge(item) : id가 있으면 데이터베이스에 저장된 엔티티를 수정한다.상품 서비스는 그저 상품 리포지토리에 위임을 하는 역할이다.복잡한 로직들이 많다 정신 차리자
복잡한 로직들이 많다 정신 차리자생성 메서드( createOrder() ): 주문 엔티티를 생성할 때 사용한다. 주문 회원, 배송정보, 주문상품의 정보를 받아서 실제 주문 엔티티를 생성한다.주문 취소( cancel() ): 주문 취소시 사용한다. 주문 상태를 취소로 변
다대일 일대다 일대일다대다 : 실무에서 사용하지 않는다.테이블 외래키 하나로 양쪽 조인 가능사실 방향이라는 개념이 없다.객체 참조용 필드가 있는 쪽만 참조 가능한쪽을 참조하면 단방향양쪽이 서로 참조하면 양방향 (용어만 존재하지 사실상 단방향)테이블은 외래키 하나로 두
현재 대부분의 웹과 앱은 HTTP를 이용해 데이터들을 전송하며 사용됩니다.HTML,json,xml 등 대부분의 데이터들을 전송할 수 있습니다.HTTP 기반으로 동작합니다.정적 리소스를 제공합니다.정적 파일 (HTML,CSS,JS) 파일을 제공할 수 있습니다.NGINX,