일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Nodejs
- 코테
- spring boot
- Spring
- 파이썬
- OpenCV
- nestJS
- 코딩테스트
- AWS
- 카카오
- nestjs typeorm
- 카카오 코테
- 카카오 알고리즘
- 시스템호출
- 해시
- @Component
- TypeORM
- @Autowired
- git
- nestjs auth
- 구조체배열
- 컴포넌트스캔
- 알고리즘
- C언어
- C++
- 프로그래머스
- 가상면접사례로배우는대규모시스템설계기초
- 스프링
- python
- thymeleaf
- Today
- Total
목록스프링 (12)
공부 기록장 💻
인프런 - 스프링 핵심 원리 기본편 정리 스프링의 핵심 컨셉은? 객체 지향 언어인 Java 기반의 프레임워크라는 점이다. 즉 객체 지향 언어가 가진 강력한 특징을 잘 살려내 좋은 객체 지향 애플리케이션을 개발할 수 있게 돕는 프레임워크라 할 수 있다. 그렇다면 좋은 객체 지향 프로그래밍이란? 객체들의 모임으로, 각 객체는 서로 메시지를 주고 받고, 데이터를 처리할 수 있다. 프로그램을 유연하고 변경이 용이하게 만든다는 특징을 지닌다. 이를 한 단어로 정의해보자면 다형성(polymorphism) 이다. 세상의 모든 것을 객체로 표현한다면, 객체를 역할(인터페이스)과 구현(클래스)으로 구분함으로써 새로운 기능을 기존 것의 변경 없이 추가를 용이하게 한다. 역할과 구현을 분리하자! 역할과 구현으로 구분하면 세..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 스프링 DB 접근 기술 시리즈 정리 1. 순수 JDBC 2. JdbcTemplate 3. JPA 4. Spring Data JPA 지금까지 DB에 접근하기 위해 순수 JDBC API를 이용해보았고, 이후에 JDBC에서 중복되는 코드를 상당 부분 제거하여 만든 JdbcTemplate을 사용해보았다. JDBC, JdbcTemplate API 모두 개발자가 프로그램 내에서 sql문을 작성해야 한다는 공통점을 지녔지만, 이번에는 sql문까지 프레임워크 내에서 관리해주는 JPA에 대해 알아보자. JPA란? JPA(Java Persistence API) 는 Spring 내에서 만든 Model의 객체와 DB 테이블의 관계를 매핑..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 스프링 DB 접근 기술 시리즈 정리 1. 순수 JDBC 2. JdbcTemplate 3. JPA 4. Spring Data JPA 스프링 내부 메모리에 접근하여 데이터를 저장하는 MemoryMemberRepository, H2 Database에 JDBC API를 통해 접근하는 JdbcMemberRepository까지 작성해보았다. 이번에는 Jdbc API를 통해 SQL문을 실행하기 위한 코드를 일일히 작성하지 않고, 조금 더 간단하게 구현이 가능한 JdbcTemplate을 이용한 DB 접근 방법에 대해 알아보도록 하자. Spring JdbcTemplate 이란? 스프링 JdbcTemplate과 MyBatis는 실무에..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 그동안은 JVM 내에서만 Java Code를 돌리며 단위 테스트를 진행했다면, 이제 스프링 컨테이너와 DB까지 연결한 통합 테스트를 진행해보도록 하자. (그러나, 단위 테스트를 잘 만드는 것이 훨씬 더 좋은 테스트를 만든다는 것임을 잊지 말자!) 우선 연결되어 있는 h2 db의 모든 튜플을 삭제해주고, @SpringBootTest 기존의 MemberServiceTest 전체를 복사하여 MemberServiceIntegrationTest 라는 이름의 테스트 클래스를 만들자. Spring Boot 프레임워크 기반의 테스트 기능을 수행하는 @SpringBootTest 어노테이션을 추가하고, memberService와 me..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 스프링 빈과 의존 관계 스프링에서 Controller가 Service에 접근하고, Service가 Repository 를 통해 데이터베이스 혹은 내부 메모리에 접근하기 위해서는 아래와 같이 스프링 컨테이너에 의해 관리되는 자바 객체인 스프링 빈에 Controller, Service, Repository를 등록해주어야 한다. 참고로, 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때 기본적으로 싱글톤으로 등록한다. (유일하게 하나만 등록해서 공유한다는 의미이다.) 따라서 같은 스프링 빈이면 모두 같은 인스턴스이다. 회원 컨트롤러가 회원 서비스, 그리고 회원 레포지터리를 사용할 수 있게 의존 관계를 준비해보자. 우선 회..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 회원 서비스 개발 회원의 Domain과 Repository를 활용하여 비즈니스 로직 역할을 하는 회원 서비스를 작성해보자. Repository에는 직접 DB에 회원 정보를 저장하거나 어떤 특정 값을 이용해 회원을 찾는 등의 save(), findById(), findByName(), findAll() 등의 메서드를 포함하고 있었다. Service에는 보다 비즈니스적 로직을 갖는 메서드들을 작성하게 된다. Repository에는 조금 더 기계적인, DB에 단순하게 접근하도록 하는 메서드 이름을 지었던 반면, Service에 포함될 메서드의 경우 조금 더 비즈니스에 의존적인 이름을 짓게 된다. 회원 이름 중복이 되지 않..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 회원을 등록하고 조회하는 간단한 회원 관리 예제 백엔드 서버를 개발해보자. 단, 아직 데이터 저장소 (DB) 가 선정되지 않음을 고려한 가상의 시나리오를 배경으로 한 예제이다. 웹 어플리케이션의 기본 구조 우선 기본적인 웹 어플리케이션의 구조는 다음과 같이 도메인, 컨트롤러, 서비스, 리포지토리로 구성된다. Domain: 비즈니스 도메인 객체 (회원, 주문, 쿠폰과 같이 주로 DB에서 저장하고 관리하는 대상 객체) Controller : 웹 MVC의 컨트롤러, API를 만드는 경우 컨트롤러의 역할 Service : 핵심 비즈니스 로직 구현 (회원의 중복 가입 방지 로직 등) Repository: DB에 접근하여 도메..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 스프링에서 웹 개발 방식에는 3가지가 있다고 하였는데, 첫번째는 정적 컨텐츠 (정적 파일을 그대로 전달), 두번째는 MVC와 템플릿 엔진 (model, view, controller로 분할하여 controller의 로직을 토대로 렌더링이 된 html 페이지를 전달), 세번째는 API (View 없이 HTTP의 Message Converter을 통해 json 스타일로 객체를 response body로 반환) 방식이다. 세번째 방식인 API 에 대한 이해를 해보자. @ResponseBody를 이용한 API - 문자열 전달 우선 Response Body에 간단하게 문자열을 전달할 수 있다. 리턴 값으로 "hello" 와 ..
클래스 내에서 getter와 setter을 어떻게 빠르고 쉽게 만들 수 있을까? 결론부터 말하자면 Alt + Insert 단축 키를 통해 빠르게 getter, setter 관련 메서드를 생성할 수 있다. 다음과 같이 Hello 라는 정적 클래스 내에 name이라는 String 변수를 만들었다. Alt + Insert 단축키 클릭 시 다음과 같이 자동으로 Generate 가능한 생성자, 메서드 들이 나타난다. Getter and Setter을 선택해보면 다음과 같이 나타난다. 이를 클릭하고 나면 아래와 같이 자동적으로 name 변수에 대한 getter, setter 메서드인 getName(), setName()이 자동적으로 추가된다. 이번에는 int형 number 변수를 선언한 뒤 getter와 sette..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 MVC와 템플릿 엔진 MVC 패턴이란 무엇인가? MVC란, Model, View, Controller을 줄인 말이다. 이전에는 정적 컨텐츠처럼, View에서 모든 개발을 진행하는 Model 1 방식을 사용했다. (JSP의 경우이다.) 지금은 MVC 패턴을 많이 사용한다. 비즈니스 로직과 데이터 베이스에 접근하는 개발을 모두 화면을 담당하는 부분에서 코드를 작성하게 되면 유지보수의 어려움이 굉장히 커진다. 따라서 현재 실무에서는, 각자의 역할과 책임에 맞게 관심사를 분리하여 MVC와 같은 패턴을 이용한 개발이 주로 이루어지고 있다. 예를 들자면, View는 화면에 그리는데 집중해야 하며, Controller와 Mode..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 웹 개발 방식 웹을 개발하는 방법에는 3가지가 있다. 1. 정적 컨텐츠. 파일을 그대로 웹 브라우저로 전달하는 방법 2. MVC와 템플릿 엔진. Model, Controller, View 템플릿 엔진 화면을 통해 서버의 어떤 프로그램으로 HTML을 동적으로 변형하여 로드. 3. API. Android, iOS, Vue, React 등의 클라이언트 또는 다른 서버와 json 포맷을 통해 데이터를 주고 받는 방식. 위의 방법 중, 1번에 해당하는 정적 컨텐츠 기능을 Spring Boot 프로젝트에서 확인해보자. 정적 컨텐츠 스프링 부트는 정적 컨텐츠 기능을 제공한다. 이전에 Thymeleaf 템플릿 엔진을 이용한 Vie..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 JAVA SDK 17과 IntelliJ IDEA 설치 본격적으로 프로젝트 환경 설정을 하기에 앞서, Java SDK 17과 IntelliJ IDE (Community 무료 버전) 설치를 완료하였다. Spring Boot 프로젝트 초기화 및 생성 Spring Boot를 기반으로 스프링 프로젝트를 만들 것이기 때문에, https://start.spring.io/ 에서 만들어보자. 필요한 라이브러리를 관리하는 Tool로는 Gradle로 설정하고, Spring Boot 버전은 3.0.1을 선택하였다. (SNAPSHOT, M1 같은 미정식 버전 제외한 최신 버전) Project Metedata 부분에 Group은 hello,..