섹션0 강의 소개 강의 소개 - 섹션1 객체 지향 설계와 스프링 이야기 - 자바 진영의 추운 겨울과 스프링의 탄생 - 스프링이란? 스프링 생태계 필수 스프링 프레임워크 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹 기술: 스프링 MVC, 스프링 WebFlux 데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원 기술 통합: 캐시, 이메일, 원격접근, 스케줄링 언어: 코틀린, 그루비 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용 스프링 부트 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성 Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨 손 쉬운 빌드..
섹션7 AOP AOP가 필요한 상황 모든 메서드의 호출 시간을 측정하고 싶다면? 아래처럼 시작 시간과 끝난 시간을 계산해야 한다 이는 메서드마다 정형화될 수 없기 때문에 일일이 처리하기 번거롭다 public Long join(Member member) { long start = System.currentTimeMillis(); try { // 중복 회원 이름 검증 validateDuplicateMember(member); memberRepository.save(member); return member.getId(); } finally { long finish = System.currentTimeMillis(); long timeMs = finish - start; System.out.println("jo..
섹션5 회원 관리 예제 - 웹 MVC 개발 회원 웹 기능 - 홈 화면 추가 스프링 부트가 스프링 컨테이너 내에 루트 관련 컨트롤러가 없으면 static 폴더의 index.html 파일을 보여주는데 만약 관련 컨트롤러가 있으면 static 폴더의 파일은 무시된다 실습함 회원 웹 기능 - 등록 form태그에서 인풋 태그의 name을 지정하면 action의 url을 따라 이동하는데 name에 지정한 값(ex. name=name)과 같은 이름의 필드를 찾고 그 필드에 자동으로 값을 대입한다 @GetMapping와 @PostMapping에 같은 url을 지정할 수 있는데 form태그의 메서드가 post일 경우 submit하면서 @PostMapping이 지정된 메서드를 동작시킨다 회원 웹 기능 - 조회 @GetMa..
섹션3 회원 관리 예제 - 백엔드 개발 회원 서비스 개발 서비스 클래스: 리포지토리와 도메인을 이용해 실제 비즈니스 로직을 작성하는 클래스 Optional ifPresent(람다식): 인자가 true면 표현식을 실행한다 private void validateDuplicateMember(Member member) { memberRepository.findByName(member.getName()) .ifPresent(m -> { throw new IllegalStateException("이미 존재하는 회원입니다"); }); } 회원 서비스 테스트 테스트에서 사용할 메서드의 이름을 한글로 지정해도 됨 테스트 코드를 작성할 때 given-when-then의 문법을 이용하면 이해가 쉬움 given: 이런 상황이..
섹션1 프로젝트 환경설정 빌드하고 실행하기 터미널로 프로젝트 폴더로 이동해서 ./gradlew build 입력 ./gradlew build 이후 build 폴더 안에 libs 폴더가 생성되고 안에 jar파일이 생성됨을 확인할 수 있다. 나의 경우 hello-spring-0.0.1-SNAPSHOT.jar 파일이다 이 파일을 java -jar hello-spring-0.0.1-SNAPSHOT.jar 명령어로 실행한다 java -jar hello-spring-0.0.1-SNAPSHOT.jar 서버에서 배포할 경우 위 jar파일만 export 시키고 해당 파일만 위 명령어로 사용하면 된다 섹션2 스프링 웹 개발 기초 정적 컨텐츠 정적 컨텐츠: 서버의 요구 없이 파일을 그대로 웹브라우저로 보내는 것 스프링 부트는..
섹션0 강의 소개 강의 소개 ❗️순서❗️ 스프링 프로젝트 생성 스프링 부트로 웹 서버 실행 회원 도메인 개발 웹 MVC개발 DB연동 - JDBC, JPA, 스프링 데이터 JPA 테스트 케이스 작성 ⭐️ 학습 방법 ⭐️: 처음부터 끝까지 직접 코딩 섹션1 프로젝트 환경설정 프로젝트 생성 스프링 프로젝트를 만들 때 start.spring.io에서 만드는 것을 권장함 start.spring.io 설명 Project → Gradle-Groovy Language → Java Spring Boot → 괄호 없는 버전 중 택1 Project Metadata Group → 기업명 등 작성 Artifact → 빌드 후 결과물 Name → 프로젝트명 Description → 필요 x Dependencies Spring W..
1. 날짜와 시간 1.1 Calendar와 Date Date: 날짜와 시간을 다룰 목적으로 JDK 1.0부터 제공된 클래스. Calendar: Date클래스를 보완하기 위해 JDK 1.1부터 제공된 클래스. Calendar와 GregorianCalendar Calendar는 추상클래스이기 때문에 직접 객체를 생성할 수 없고 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 한다. Calendar cal = new Calendar(); // 에러 Calendar cal = Calendar.getInstance(); // 이게 맏다. getInstance()메서드는 Calendar클래스를 구현한 클래스의 인스턴스를 반환한다. Calendar를 상속받아 완전히 구현한 클래스로는 GregorianCale..
1. java.lnag패키지 1.1 Object클래스 Object클래스는 멤버변수는 없고 오직 11개의 메서드만 가지고 있다. Object클래스의 메서드 설명 protected Object clone() 객체 자신의 복사본을 반환한다. public boolean equals(Object obj) 호출한 객체 자신과 obj가 같은 객체라면 true, 아니면 false protected void finalize() 객체가 소멸될 때 가비지 컬렉터에 의해 자동으로 호출된다. 이 때 수행되어야하는 코드가 있을 때 오버라이딩한다.(거의 사용안함) public Class getClass() 객체 자신의 클래스 정보를 담고 있는 Class 인스턴스를 반환한다. public int hashCode() 객체 자신의 해시..
1. 예외처리(exception handling) 1.1 프로그램 오류 프로그램 에러 = 오류: 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우를 초래하는 원인. 발생 시점에 따른 에러의 종류 컴파일 에러(compile-time error): 컴파일 시 발생하는 에러 런타임 에러(runtime error): 실행 시 발생하는 에러 논리적 에러: 실행은 되지만 의도와 다르게 동작하는 것 수습 가능한 수준에 따른 에러의 종류 1. 에러: 메모리 부족(OutOfMemoryError)이나 스택오버플로우(StackOverflowError)와 같이 일단 발생하면 복구할 수 없는 오류 2. 예외: 발생하더라도 수습 가능한 오류 1.2 예외 클래스의 계층구조 자바에서는 오류를 Erro..
1. 상속(inheritance) 상속 : 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속의 장점 1. 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있다. 2. 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. → 코드의 재사용성을 높이고 코드의 중복을 제거해 프로그램의 생산성과 유지보수에 크게 기여한다. 상속을 구현할 때는 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 extends와 함께 써주면 된다 class Child extends Parent { } 이 두 클래스를 상속관계에 있다고 하며 상속해주는 클래스(Parent)를 조상/부모/상위/기반 클래스라 하고, 상속 받는 클래스(Child)를 자손/자식/하위/파..