스프링) 제어의 역전(Inversion of Control)
·
자바 탐구
제어의 역전 (Inversion of Control) 소프트웨어 공학에서, IoC는 프로그래머가 작성한 프로그램이 재사용 라이브러리의 흐름 제어를 받게 되는 소프트웨어 디자인 패턴을 말한다. 제어의 역전 패턴에는 크게 두 가지가 있다. 1. Dependency Injection(Di) 객체가 필요로 하는 의존성(dependecy)을 직접 생성하지 않고 외부에서 주입받아 사용하는 방법이다. 이를 통해 의존성 주입을 통해 객체 간의 결합도를 낮추고 유연성을 높일 수 있다. 2. Template Method 패턴 상위 클래스에서 알고리즘의 구조를 정의하고, 하위 클래스에서 구체적인 구현 내용을 결정하는 패턴이다. 이를 통해 하위 클래스에서 구현 내용을 변경하여 동작 방식을 다양화할 수 있다. IoC 컨테이너 ..
스프링) 의존관계 주입(Dependency Injection)
·
자바 탐구
의존관계 주입 (Dependency Injection) 객체 지향 프로그래밍에서 사용되는 디자인 패턴 중의 하나로, 클래스 간의 결합도를 낮추기 위해 사용된다. Ioc의 구현 방법 중 하나로 의존관계 주입은 객체가 아닌 외부에서 의존 객체를 생성하고, 생성자, 메서드, 필드 등을 통해 주입하는 방식이다. A class -1 public class A { public void method() { B b = new B(); // B 클래스의 메서드를 호출 b.play(); } } B class public class B { public void play() { System.out.println("B에서 플레이가 되고있습니다."); } } "A class"에서 "B class"를 인스턴스화하여 호출하고 있으므..
스프링 부트) Dependency : Spring Boot DevTools
·
자바 탐구
Spring Boot DevTools InteliJ의 "SpringInitializr"에서 프로젝트 시작 전에 여러 가지 dependency를 추가할 수 있다. 또는 프로젝트를 빌드할 때 아래의 코드를 dependency에 추가하면 된다. Maven org.springframework.boot spring-boot-devtools true Gradle. dependencies { compileOnly("org.springframework.boot:spring-boot-devtools") } 기능 "spring-boot-devtools"를 사용하는 응용 프로그램(application)은 클래스 경로의 파일이 변될 때마다 자동으로 다시 시작한다. 코드를 변경하고 다시 확인하기 위해 다시 시작할 필요 없이 변..
인텔리제이) FAILURE : Build failed with an exception.
·
자바 탐구
Build failed with an exception 에러 프로젝트가 빌드가 될 때 gradle의 경로가 올바르지 않아 발생하는 에러이다. 다른 사람의 레포지토리로부터 파일을 받아오면 해당 설정의 경로가 작업자의 환경과 달라져서 생긴 오류인 듯하다. 인텔리제이의 왼쪽 상단에서 "File" => "Settings" => "Build, Exception, Deployment" => "Gradle" "Gradle user home"의 경로를 해당 프로젝트의 ". gradle"로 변경하고 스프링 부트에 맞는 Gradle JVM을 변경해 주면 에러가 해결된다.
JWT) JWT 사용해보기
·
자바 탐구
JWT 사용해 보기 JWT (Json Web Token) 서버에 세션 정보를 저장하지 않고, 로그인 시 클라이언트에게 로그인 사용자 정보가 포함된 토큰을 발행하고, 클라이언트는 서버에 어떤 작업을 요청할 때마다 이 토큰을 같이 보내고, 서버는 이 토큰에 포함된 사용자 정보를 이용해서 authentication, authorization을 처리하는 방식이다. 처리방식 1. 사용자 로그인 시 서버는 사용자 인증을 완료하고 외부에 노출되어도 문제가 없는 인증 관련 정보(사용자 ID, 권한 등)를 JSON 형태로 만든다. (Payload) 2. JSON형태의 Payload를 base64 인코딩을 하여 문자열을 만들고, 미리 정한 시스템의 SecretKey(전체 시스템에서 사용하는 암호)를 이용하여 서명 문자열을..
프로그래머스) (mySQL) 인기있는 아이스크림
·
데이터베이스 탐구
인기있는 아이스크림 인기있는 아이스크림 - 프로그래머스 - 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정렬조건이 같을 때의 처리에 대한 것이 핵심으로 묻는 문제인 듯하다. ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID 총주문량이 같다면 DESC로 내림차순으로 정렬을 하고, 같다면 바로 뒤에 조건을 붙여주어 문제에서 요구하는 대로 정렬할 수 있다. SELECT FLAVOR FROM FIRST_HALF ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID
디자인 패턴) MVC
·
웹 탐구
MVC (Model - View - Controller) 소프트 웨어 디자인 패턴 중의 하나이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적인 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC 패턴은 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리한다. Model : 데이터와 비즈니스 로직을 담당 View : 사용자 인터페이스를 담당 Controller : Model과 View 사이의 상호작용을 조정하고 제어 모델, 뷰, 컨트롤러의 관계를 묘사하는 간단한 다이어그램 웹 애플리케이션에서 일반적인 MVC구성요소 다이어그램 이를 ..
웹) HTTP
·
웹 탐구
HTTP (HyperText Transfer Protocol) 등장배경 팀 버너스리라는 분이 연구소에서 일하실 때 연구원들이 논문을 읽고 해당 논문에 쓰여있는 참고 논문을 보고 싶어 했다. 하지만 그 당시 논문은 단순히 적혀있기만 하고 해당 논문을 보기 위해서는 또다시 논문을 요청해야 하는 번거로운 과정이 있었다고 한다. 이에 대해 모든 논문을 모두 연결시키면 어떨까? 하는 발상에서 시작되어 지금의 HTTP가 되었다. HTTP는 많은 인기를 끌며 발전을 하게 되었지만, 정해진 규칙이 없어서 HTTP의 사용법이 모두 상이했다. 이러한 문제를 해결하기 위해 1996년에 첫 상용화 버전인 HTTP/1.0이 발표되었다. HTTP 요청 구조 HTTP 요청은 보통 크게 세 가지 요소로 나눌 수 있다. 1. Star..
오지랖 토끼
알고자 하는 것에 대한 오지랖