Spring

    [Spring/Data JPA] 프로젝트 환경설정

    🌝 프로젝트 환경설정 preference → Build and run IntelliJ IDEA로 변경하기 enable annotation option 체크 🌝 h2 데이터베이스 설치 spring.io 들어가서 h2 database와 spring version 일치하는지 확인 chmod 755 h2.bat 권한주고 ./h2.bat /datajpa.mv.db 파일 생성 확인 → jdbc:h2:tcp://localhost//datajpa 이렇게 접속! 🌝 스프링 데이터 JPA와 DB 설정, 동작확인 Member entity, MemberJpaRpository 작성 @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id;..

    [Spring] 회원 관리 예제 02 - 회원 서비스 개발 → Test Code 작성

    🌳 회원 Service 개발 회원가입 수정 전 @Service public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); // 회원가입 public Long join(Member member){ Optional result = memberRepository.findByName(member.getName()) result.ifPresent(m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); return member.getId(); } ▪ @Service 어노테이션을 통해 스프링 컨테이너에 등록된다 ▪ ifPrese..

    [Spring] 회원 관리 예제 01 - 비즈니스 요구사항 정리, domain & repository 생성 → Test code 작성

    🌳 비즈니스 요구사항 정리 데이터 : 회원ID, 이름 기능 : 회원 등록, 회원 조회 DB : 아직 어떤 DB를 사용할지 정해지지 않은 가상의 시나리오 ▪ 따라서 인터페이스로 구현 클래스를 변경할 수 있도록 설계 → 구현체를 통해 가벼운 메모리 기반의 데이터 저장소 사용 ▪ 테스트 프레임워크 → junit 일반적인 웹 애플리케이션 계층 구조 ▪ controller → 웹 MVC의 컨트롤러 역할 ▪ service → 핵심 비즈니스 로직 구현 ▪ repository → 데이터베이스에 직접 접근, 도메인 객체를 DB에 저장하고 관리 → Node에서 사용했던 model과 비슷한 역할이라고 생각하면 될 듯 하다 ▪ domain → 비즈니스 도메인 객체 → 회원, 주문 등등 주로 DB에 저장하고 관리되어지는 객체 ..

    [Spring] 정적 컨텐츠, MVC와 템플릿 엔진, API

    🌳 웹 개발 기초 정적 컨텐츠 서버의 관여없이 파일을 그대로 웹브라우저에 내려주는 컨텐츠 ex) welcome page MVC와 템플릿 엔진 서버에서 프로그래밍하여 동적으로 바꾸어 내려주는 컨텐츠 controller, model, view등의 패턴이 필요 ex) jsp, php API JSON 데이터 포맷을 사용하여 클라이언트에게 정보를 전달하는 방식 🌳 정적 컨텐츠 스프링은 정적 컨텐츠 기능을 자동으로 제공한다 → 원하는 파일을 넣으면 그대로 반환이 된다 hello-static.html 정적 컨텐츠 입니다. [동작 과정] 내장 톰캣서버가 요청을 받아 스프링에게 넘긴다 controller 내에서 hello-static을 찾는다 controller에 없으면 resources에서 hello-static을 찾..

    [Spring] 환경 구축, 라이브러리, thymeleaf 템플릿 엔진 동작 원리

    🌳 프로젝트 생성 java 11 설치 Maven / Gradle Project Maven → pom.xml을 이용하여 정형화된 빌드 시스템을 제공 Gradle → 유연한 범용 빌드 도구 제공 Gradle이 시기적으로 늦게 나온만큼 뛰어난 스펙을 갖고있고, 동적인 빌드 시스템을 xml로 정의하기에는 어려운 부분이 많다 ↔ 요즘은 다들 Gradle로 넘어오는 추세라고 한다. Spring boot Spring boot를 통해 간단하게 프로젝트를 생성할 수 있다. main과 test 디렉토리를 나누는것이 요즘 디폴트 test에는 작성한 코드들에 대한 테스트코드들이 들어가는데, 실무에서 빠질 수 없는 매우 중요한 코드라고 한다. resources에는 설정파일이 위치하는데, java파일을 제외한 모든 파일들이 위치..