B.E/Spring
[Spring] Spring을 이용한 Todo Crud 구현하기(2) - Jpa 셋팅 및 DB 연결
아래의 게시글을 확인하고 본 글을 읽기 바랍니다. [Spring] Spring을 이용한 Todo Crud 구현하기(1) - Spring boot 셋팅 해당 게시글은 아래 스택을 이용하여 구현할 예정 입니다. Spring boot Spring Security + JWT JPA 1. Spring Boot 생성 먼저 Spring Boot Project를 생성하기 위하여 아래의 사이트에 접속한다. https://start.spring.io/ 위 pinomaker.com 이번 게시글에서는 JPA와 MySQL를 셋팅해보자 runtimeOnly 'com.mysql:mysql-connector-j' // MySQL Driver implementation 'org.springframework.boot:spring-boo..
[Spring] Spring을 이용한 Todo Crud 구현하기(1) - Spring boot 셋팅
해당 게시글은 아래 스택을 이용하여 구현할 예정 입니다. Spring boot Spring Security + JWT JPA 1. Spring Boot 생성 먼저 Spring Boot Project를 생성하기 위하여 아래의 사이트에 접속한다. https://start.spring.io/ 위의 사이트에 들어가면 Spring boot 프로젝트를 생성하기 위한 사이트가 나오는 데, 아래의 설정에 맞추어서 셋팅하거나 본인이 하고 싶은 것이 있으면 수정을 한 후에 GENERATE 버튼을 클릭하면 압축 폴더가 다운로드 받아지며, 해당 폴더를 인텔리제이로 열어주자 Project(Package 모듈) : Gradle Language : Java Spring boot Version : 2.7.8 (SNAPSHOT이 붙은..
[Spring] Spring DI에 대해서 알아보자.
DI Dependency Injection의 약자로, 의존 주입을 의미하는 데, 여기서 말하는 의존이란 객체 간의 의존을 의미한다. 아래의 예시를 보고 알아보자. public class MemberService{ // MemberDao 객체 생성 private MemberDao memberDao = new MemberDao(); // Member 저장 메서드 public void save(RequestDto req){ // 같은 Email의 Member가 있는 지 조회 Member member = memberDao.selectByEmail(req.getEamil()); // Email을 가진 Member가 있으면 예외 처리 if(member != null){ throw new DuplicateMember..
Templatee Engine, Mustache 문법
참고 사이트 : https://taegon.kim/archives/4910 Mustache Mustache는 제어 구조를 가진, 가장 문법이 간단하고 많은 언어를 지원하는 Template Engine이며, Mustache를 기반으로 확장한 Template Engine도 몇가지 있는 데, 대표적으로는 Handlebars와 Hogan.js가 있다. 변수의 사용 아래의 데이터를 이용해 Mustache에서 변수를 사용하는 방법을 알아보자 // Data { "name" : "Chris", "company" : "Github" } Mustache에서는 {{ }}에 변수 이름을 {{ name }}와 같이 입력하여 사용하는 데, 문자열은 자동으로 HTML 이스케이프가 되어 출력이 되지만 이스케이프가 되지 않은 문자열을..
[Spring] MyBatis에 대해 알아보자.
참고 : https://jung-story.tistory.com/121 이번에 내가 속한 마스외전에서, 외주 프로젝트를 받았는 데, Spring + MyBatis를 이용하여 개발을 진행해서 MyBatis에 대해서 알아보고자 한다. MyBatis란? 객제 지향 언어인 자바를 이용하여 ORM을 쉽게 할 수 있게 해주는 프레임 워크다. JDBC를 통해 데이터베이스에 엑세스 하는 작업을 캡슐화 하며, 일반적인 SQL 쿼리와 저장 프로 시저 및 고급 매핑을 지원하고 모든 JDBC 코드 및 매개 변수의 중복작업을 제거한다. MyBatis는 프로그램에 있는 SQL 쿼리문을 한 구성 파일에 구성하여 코드와 SQL을 분리하는 장점을 가지는 데, 이번 프로젝트에서는 XML 파일에 쿼리문을 작성해 분리를 한다. MyBati..
[Spring] 싱글톤 패턴
해당 글은 김영한님의 스프링 핵심 원리 강좌를 정리한 글 입니다. Spring은 기업용 온라인 서비스 기술을 지원하기 위해서 만들어졌고, 대부분의 스프링 어플리케이션은 웹이다. 웹은 주로 여러 개의 클라이언트로부터의 요청이 동시에 발생하게 되고, 요청이 올 때 마다 객체를 생성하게 되는 데 고객 트래픽이 1초에 100이라면 1초에 100개의 객체가 생성 되는 심각한 메모리 낭비가 발생하게 되었다. 해당 문제를 해결 하기 위해서 하나의 객체를 생성하고, 이 객체를 공유하도록 설계를 하여 효율적인 개발을 하게 되는 데 이를 싱글톤 패턴이라고 한다. 싱글톤 패턴 싱글톤 패턴은 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 그러기에 객체 인스턴스를 2개 이상 생성하지 못 하도록 막아야하..
[Spring] 스프링 컨테이너 생성
해당 게시글은 김영한님의 스프링 핵심 원리 - 기본편의 강좌 정리 입니다. 내용 및 소스 출처 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Appconfig.class) ApplicationContext는 스프링 컨테이너라고 하며, 인터페이스다. 스프링 컨테이너는 XML 혹은 애노테이션 기반의 자바 설정 클래스를 만들 수 있지만 요즘은 애노테이션을 많이 사용한다. 스프링 컨테이너를 생성 ..
[Spring] Spring Boot 프로젝트 배포
해당 강좌는 EC2 혹은 개인 서버가 있다는 가정하에 진행 합니다. 0. 프로젝트 Java : 11 Gradlew Project GitHub - pino-hoo/RockPaperScissors Contribute to pino-hoo/RockPaperScissors development by creating an account on GitHub. github.com 1. Git Clone 배포를 희망하는 프로젝트를 Git에 업로드하고, clone 받는다. # git clone [주소] git clone https://github.com/pino-hoo/RockPaperScissors.git 2. Java 설치 프로젝트 버전에 맞는 JDK를 설치한다. sudo apt-get install openjdk-1..
[Spring] Ioc, DI, 컨테이너
해당 게시글은 김영한님의 스프링 핵심 원리 - 기본편의 강좌 정리 입니다. 내용 및 소스 출처 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8 Ioc 제어의 역전(Inversion of Control) 기본 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결을 했다. 즉 구현 객체가 프로그램의 제어 흐름을 조종한 것이다. 하지만 AppConfig(조립, 설정자)가 있으면, 구현 객체는 자신의 로직을 실행하는 역할만 담당하며, 모든 제어 흐름을 AppConfig가 가져간다. 즉 AppConfig가 어떤..
[Spring] 좋은 객체 지향 설계의 5가지 원칙
해당 게시글은 김영한님의 스프링 핵심 원리 - 기본편의 강좌 정리 입니다. 내용 및 소스 출처 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8 SOLID 클린코드로 유명한 로버트 마틴이 정리한 좋은 객체 지향 설계의 5가지 원칙 SRP: 단일 책임 원칙(single responsibility principle) OCP: 개방-폐쇄 원칙 (Open/closed principle) LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregatio..