스프링(4)
-
스프링 DB 접근 기술
H2 데이터베이스 설치실무에서는 Mysql, Oracle을 쓰지만, 이번시간에는 20년전에 개발했던 DB를 사용해보자. 테이블 생성하기테이블 관리를 위해 프로젝트 루트에 `sql/ddl.sql` 파일을 생성순수 Jdbc환경 설정build.gradle 파일에 jdbc, h2 데이터베이스 관련 라이브러리 추가DataSource는 데이터베이스 커넥션을 획득할 때 사용하는 객체다. 스프링 부트는 데이터베이스 커넥션 정보를 바탕으로 DataSource를 생성하고 스프링 빈으로 만들어둔다. 그래서 DI를 받을 수 있다.구현 클래스 추가 이미지스프링 설정 이미지개방-폐쇄 원칙(OCP, Open-Closed Principle)확장에는 열려있고, 수정, 변경에는 닫혀있다.스프링의 DI (Dependencies Injec..
2025.09.24 -
회원 관리 예제 - 웹 MVC 개발
회원 웹 기능 - 홈 화면 추가홈 컨트롤러 추가회원 관리용 홈참고: 컨트롤러가 정적 파일보다 우선순위가 높다.회원 웹 기능 - 등록회원 등록 폼 개발 회원 등록 폼 컨트롤러회원 등록 폼 HTML ( `resources/templates/members/createMemberForm` )회원 등록 컨트롤러웹 등록 화면에서 데이터를 전달 받을 폼 객체@Getmapping, @Postmapping회원 웹 기능 - 조회 회원 컨트롤러에서 조회 기능회원 리스트 HTML퀴즈요청 처리 시 스프링 MVC는 컨트롤러 매핑과 정적 자원 중 무엇을 먼저 찾을까요?스프링 MVC는 특정 경로에 대해 먼저 컨트롤러 매핑을 찾고, 없으면 정적 자원을 찾습니다. 이를 통해 웹 기능을 우선 처리할 수 있습니다.회원 가입처럼 서버 상태..
2025.09.22 -
스프링 빈과 의존관계
컴포넌트 스캔과 자동 의존관계 설정회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 준비하자.memberService가 스프링 빈으로 등록되어 있지 않다.스프링 빈을 등록하는 2가지 방법컴포넌트 스캔과 자동 의존관계 설정 자바 코드로 직접 스프링 빈 등록하기컴포넌트 스캔 원리 `@Component` 애노테이션이 있으면 스프링 빈으로 자동 등록된다. `@Controller` 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트 스캔 때문이다. `@Component` 를 포함하는 다음 애노테이션도 스프링 빈으로 자동 등록된다. `@Controller` `@Service` `@Repository` `memberService` 와 `memberRepository` 가 스프링 컨테이너에 스..
2025.09.20 -
회원 관리 예제 - 백엔드 개발
비즈니스 요구사항 정리데이터: 회원ID, 이름기능: 회원 등록, 조회아직 데이터 저장소가 선정되지 않음(가상의 시나리오)일반적인 웹 어플리케이션 계층 구조컨트롤러: 웹 MVC의 컨트롤러 역할서비스: 핵심 비즈니스 로직 구현리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨클래스 의존관계아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계데이터 저장소는 RDB, NoSQL 등등 다양한 저장소를 고민중인 상황으로 가정개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용회원 도메인과 리포지토리 만들기회원 리포지토리 ..
2025.09.19