분류 전체보기 188

[Spring boot로 게시판 만들기] 1. DB부터 CRUD 로직 구현하기

이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹서비스를 공부하며 기록한 것입니다. 자세한 내용은 책을 통해 공부해야 하기 때문에 간단하게 정리한 내용만 있습니다. 1. 롬복 Lombok, Gradle에 추가하기 build.gradle의 의존성 설정에 dependencies { compile(org.projectlombok:lombok) } 을 추가하고, [settings]-[Annotation Processor]에서 Enable annotation processing을 체크한다. 2. Spring Data JPA 적용하기 웹 애플리케이션에서 관계형 데이터베이스(RDB)는 빠질 수 없는 요소로, 애플리케이션 코드보다 SQL로 채워졌었다. SQL을 통해서만 데이터베이스에 저장하고 조회하다보니 SQL이 ..

Java/Spring 2021.04.13

[Java] 롬복 Lombok

롬복 Lombok은 자바 개발할 때 자주 사용하는 Getter, Setter, 기본생성자, toString 등을 어노테이션으로 자동생성해준다. 의존 설정 (in gradle) repositories { mavenCentral() } dependencies { compileOnly 'org.projectlombok:lombok:{version}' annotationProcessor 'org.projectlombok:lombok:{version}' testCompileOnly 'org.projectlombok:lombok:{version}' testAnnotationProcessor 'org.projectlombok:lombok:{version}' } 사용되는 어노테이션 @Getter : 선언된 모든 필드의..

Java 2021.04.13

[Basic] RESTful API

REST (Representational State Transfer) 아키텍처의 제약조건을 준수하는 API 웹 장점을 최대한 활용할 수 있는 아키텍쳐로 REST를 발표했다. 구성 자원 (Resource) - URI 행위 (Verb) - HTTP Method 표현 (Representations) 특징 1) Uniform : URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍쳐 스타일 2) Stateless : 작업을 위한 상태 정보를 따로 저장하고 관리하지 않는다. 세션이나 쿠키를 별도로 저장하거나 관리하지 않음. API 서버는 단순히 요청만 처리한다. 3) Cacheable : HTTP 표준을 그대로 사용하기 때문에 웹에서 사용하는 기존 인프라를 그대로, 캐싱 기능을 사용..

Anything 2021.04.12

[Java Spring] JPA Auditing

JAVA ORM 표준 JPA를 활용해 RDBS (관계형 데이터베이스)에 매핑할 때 공통적으로 가지는 필드나 컬럼이 존재한다. ex) 생성일자, 수정일자, 식별자 이 때 중복되는 코드가 많아지는데, JPA가 Audit 기능을 제공해 공통적인 컬럼들을 관리하도록 한다. Gradle 빌드 의존성에 spring-boot-starter-data-jpa만 추가하면 사용가능하다. 도메인 패키지에 공통으로 사용되는 컬럼을 정의한 클래스를 생성한다. @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public class BaseTimeEntity { @CreatedDate private LocalDateTime createdDate; @L..

Java 2021.04.10

[Spring boot로 게시판 만들기] 0. 프로젝트 생성부터 index.html

0. 프로젝트 생성 https://start.spring.io/ 에 접속한다. Build Tool은 Gradle로 선택했다. 언어는 JAVA. Spring Boot 버전의 경우 SNAPSHOT이나 M3가 붙지 않은 안정적인 버전을 선택한다. Group과 Artifact는 임의로 지정했다. Group 모든 프로젝트에서 이 프로젝트를 식별하게 해주는 식별자 역할을 한다. 원래, Java 패키지 이름 규칙을 따라 제어하는 도메인 이름의 반대로 시작해야 한다. ex) org.springframework와 같이 Artifact는 버전 없는 JAR 파일의 이름, 특수문자 없이 소문자로만 지정해야 한다. Packaging 방식은 WAR를 선택했다. JAR*와 WAR** 모두 자바 애플리케이션을 쉽게 배포하고 동작시킬..

Java/Spring 2021.04.08

[Java Spring] 컨테이너와 IoC, DI

제어의 역전 IoC (Inversion Of Control) 기존에는 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. 구현 객체가 프로그램을 제어했다. 하지만, 좋은 객체 지향 프로그래밍을 위해 역할과 기능을 분리하면서 구현 객체는 자신의 기능을 수행하기만 한다. 프로그램을 제어하는 것은 역할과 기능을 매칭하는 구성자*에게 주어진다. 구성자는 사용영역이 아닌 외부에 존재한다. 제어의 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라고 한다. * 제어의 역전과 의존관계 주입을 위해 사용되는 구성자를 IoC 컨테이너 또는 DI 컨테이너라고 한다. 다르게는 어셈블러, 오브젝트 팩토리 등으로 부르기도 한다. (아래에서부터 컨테이너라고 하겠음...

Java 2021.04.08

2021. 04. 08

Django를 통해 웹 애플리케이션을 개발하다가 Spring을 배워 하려고 하니, 망망대해에 떠있는 배같이 넓게만 느껴진다. 그래도 좋은 객체지향 프로그래밍이 무엇이며 어떻게 구현할 지 고민하게 된다. 빠른 처리만이 좋은 코드가 아니라 잘 구현되어 유지보수가 편리한 것이 더 좋은 것 같다. 코딩테스트, 아직 문제 풀이 경험이 부족한 것 같다. 문제를 다가가는 방식이 부족하다. 더 많이 풀어봐야겠다.

Journal 2021.04.08

[Java] 좋은 객체지향 프로그래밍 5원칙 (SOLID)

좋은 객체 지향 프로그램을 위한 5가지 원칙 SRP SRP (Single Responsibility Principle) 단일 책임의 원칙 한 클래스는 하나의 책임만 가져야 한다. 하나의 클래스가 여러가지 기능을 가져서 복잡한 연관 관계를 갖지 않는 것. 변경이 있을 때 파급효과가 적으면 SRP를 잘 따른 것. OCP OCP (Open-Closed Principle) 개방-폐쇄 원칙 가장 중요한 원칙 중 하나. 소프트웨어 요소는 확장에는 열려 있으나, 변경에는 닫혀 있어야 한다. 다형성을 활용해 지킨다. 사용되는 코드의 영역에서 변경은 없으나, 코드는 확장될 수 있어야 한다. 처음에 이해하기 어려웠지만, 생각해보면 인터페이스, 클래스를 구분해 역할과 기능을 구분한 것처럼 새로운 클래스, 더 확장된 클래스는..

Java 2021.04.07

[Python] 프로그래머스 완전탐색 모의고사

프로그래머스 코딩테스트 연습문제 중 완전탐색 모의고사 문제 수포자가 찍는 방법을 반복되게 주어졌다. 1번은 1, 2, 3, 4, 5를 반복하고 2번은 2, 1, 2, 3, 2, 4, 2, 5를 반복 3번은 3, 3, 1, 1, 2, 2, 4, 4, 5, 5를 반복한다. 나는 큐 구조를 만들어 정답지 큐가 비어있기 전까지 1번부터 꺼내어 각각 수포자의 선택과 비교하고, 수포자의 답은 다시 큐에 Append하는 방식을 생각했다. from collections import deque def solution(answers): answer = [] queue = deque(answers) forgiven_1 = deque([1, 2, 3, 4, 5]) forgiven_2 = deque([2, 1, 2, 3, 2,..

Algorithm 2021.04.07
반응형