본문 바로가기

전체 글

(34)
MariaDB 설치 및 spring 연결(mac M1) 최근에 넘겨받게 된 프로젝트가 하나 있다. 그 전에 DB라곤 H2 밖에 써본적 없기에 안에 아키텍쳐를 눈으로 보고 싶어도 실행이 안되는 상황이었다. 아는 분께 여쭤보니 DB 연동문제라는 답을 받고 난 후, 라는 인수인계서의 내용을 풀기 위해 3번이 의미하는 바가 무엇인지는 모르지만 설정을 하였다. DB연동이 무서워서 일단 실행해본 결과, 당연히 오류가 났고 실행은 안됐다. DB 설치 관련해서 워낙 설정도 달라서, 이를 해결하는데 어려움을 겪어 내가 해결한 방법을 복기하고자, 나아가 도움이 될 수 있다면 도움이 되고자 정리해본다. 제목의 내용을 알아보자. MariaDB 설치 및 spring 연결(mac M1) 일단 MariaDB 설치를 먼저 해주어야한다. Mac HomeBrew가 설치되어 있고, 최신화 되..
[스프링 기본] 스프링 컨테이너와 싱글톤 패턴 시작에 앞서 이 글은 인프런 김영한 님의 강의를 정리하며 쓴 글입니다. 웹 백엔드를 공부하시는 분이라면 꼭 김영한님의 강의를 들어보시길 추천합니다. 이번 글에서는 웹 어플리케이션과 싱글톤에 대해 알아보고, 싱글톤 패턴을 적용하는 방법과 스프링 컨테이너가 어떻게 이를 관리하는지 살펴보겠습니다. 웹 어플리케이션과 싱글톤 우선, 순수한 DI 컨테이너인 AppConfig는 요청마다 객체를 새로 생성하여 메모리 낭비가 심한 단점이 있습니다. 해결방안은 해당 객체가 딱 1개만 생성되고, 공유하도록 설계하면 됩니다. -> 싱글톤 패턴 싱글톤 패턴 싱글톤 패턴은 클래스의 인스턴스가 한 개만 생성되도록 보장하는 디자인 패턴입니다. 이를 위해 private 생성자를 사용하고, 객체 인스턴스를 공유하는 방식으로 설계됩니다...
[스프링 기본] 스프링으로 전환하기 지금까지 저희는 객체지향의 원리를 잘 활용해서 코드를 짜왔습니다. 이제 스프링과 같이 사용해보겠습니다. AppConfig 스프링 기반으로 변경 @Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl( memberRepository(), discountPolicy()); } ... AppConfig에 설정을 구성한다는 뜻의 `@Configuration` 을 붙여줍니다. 각 메서드에 `@Bean`..
[스프링 기본] 객체 지향 원리 적용 시작에 앞서 이 글은 인프런 김영한 님의 강의를 정리하며 쓴 글입니다. 웹 백엔드를 공부하시는 분이라면 꼭 김영한님의 강의를 들어보시길 추천합니다. 객체 지향의 원리를 더 적용해보자! 강의에서는 스프링 핵심 원리 - 예제 만들기 를 통해서 순수한 자바 코드를 통해 객체 지향의 기본 개념과 다형성, 인터페이스, 그리고 SOLID 원칙을 어떻게 적용하는지 살펴봤습니다. 이번에는 조금 더 발전시켜서 새로운 요구사항에 대응하고, 스프링 컨테이너에서 동작하도록 만들어보겠습니다. 새로운 할인 정책 개발 제작사에서 새로운 요구사항이 들어왔습니다. 할인 정책을 고정 금액이 아닌 주문 금액의 일정 비율로 변경하고 싶다는 것이죠. 이를 수용하기 위해 RateDiscountPolicy라는 새로운 할인 정책 클래스를 개발했습..
[스프링 기본] 객체 지향 설계와 스프링 시작에 앞서 이 글은 인프런 김영한 님의 강의를 정리하며 쓴 글입니다. 웹 백엔드를 공부하시는 분이라면 꼭 김영한님의 강의를 들어보시길 추천합니다. 스프링이란? 스프링은 자바 언어 기반의 프레임워크로, 객체 지향 언어를 기반으로 하는 프레임워크입니다. 주요한 특징 중 하나는 객체 지향의 기본 원칙을 살려내며, 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크입니다. 좋은 객체 지향 프로그래밍이란? 좋은 객체 지향 프로그래밍은 다양한 특징 중에서도 유연하고 변경이 용이하다는 특징이 크게 강조됩니다. 이는 객체 지향의 핵심 개념 중 하나인 다형성으로 연결됩니다. 역할과 구현을 분리 역할 = 인터페이스 구현 = 인터페이스를 구현한 클래스, 구현 객체 객체 설계시 역할을 부여하고, 그 역할을 수..
[스프링 입문] JPA 시작에 앞서 이 글은 인프런 김영한 님의 강의를 정리하며 쓴 글입니다. 웹 백엔드를 공부하시는 분이라면 꼭 김영한님의 강의를 들어보시길 추천합니다. 우리가 JDBC Template을 사용하면서 반복되는 번거로운 작업들을 줄이는 데 성공했습니다. 이제는 더 편하게 데이터베이스와 상호 작용할 수 있는 JPA를 살펴보겠습니다. JPA란? JPA는 자바 ORM 기술의 하나로, 객체와 관계형 데이터베이스의 테이블을 간편하게 매핑해줍니다. ORM은 Object-Relational Mapping의 약자로, 자바 객체와 데이터베이스 테이블 간의 관계를 매핑하는 것입니다. 엔터티(Entity)와 매핑 JPA에서는 엔터티를 정의할 때 @Entity 어노테이션을 사용합니다. 이 어노테이션을 붙이면 해당 클래스가 데이터베이스..
[스프링 입문] 화면 만들기 시작에 앞서 이 글은 인프런 김영한 님의 강의를 정리하며 쓴 글입니다. 웹 백엔드를 공부하시는 분이라면 꼭 김영한님의 강의를 들어보시길 추천합니다. 1. 홈 화면 추가 먼저, 홈 화면을 만들어봅시다. HomeController 클래스를 만들고 @GetMapping("/") 어노테이션을 통해 "/" 경로에 접근 시 "home" 템플릿으로 이동하도록 설정합니다. @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } 2. 회원 등록 화면 만들기 회원 등록을 위한 화면을 만들어봅시다. 클라이언트가 회원 가입 버튼을 눌렀을 때, 입력 폼이 있는 HTML 페이지를 반환하도록 설정합니다. 이..
[스프링 입문] 스프링 빈과 의존관계 시작에 앞서 이 글은 인프런 김영한 님의 강의를 정리하며 쓴 글입니다. 웹 백엔드를 공부하시는 분이라면 꼭 김영한님의 강의를 들어보시길 추천합니다. 스프링 컨테이너와 의존관계 설정 방법 우리는 이전에 멤버 객체를 만들고 멤버 서비스를 통해 가입하고, 레포지토리에서 데이터를 조회하는 기능을 구현했습니다. 이제는 회원 가입 결과를 HTML로 보여주기 위해 컨트롤러가 큰 역할을 할 차례입니다. 컨트롤러가 서비스를 통해서 회원 가입하고 데이터를 조회하려면 이들 간에는 의존관계가 필요합니다. 여기서는 스프링 컨테이너를 활용하여 의존관계를 설정하는 방법에 대해 알아보겠습니다. 컴포넌트 스캔으로 의존관계 설정 @Controller, @Service, @Repository 어노테이션이 붙은 클래스는 스프링 컨테이너가 ..