All 142

FrameWork/Spring
연관관계

오늘은 연관관계에 대해서 알아보고자 한다.   연관관계연관관계란 객체와 데이터베이스 테이블을 서로 매핑(매칭)시켜주는 것을 의미한다.  방향객체들이 연관관계를 맺을 때, 한쪽에서만 참조가 가능한지 양방향에서 참조가 가능한지에 대한 방향을 의미한다. 일반적으로 DB테이블간에는 어떤 테이블을 기준으로 하든 원하는 정보를 JOIN을 사용하여 조회가 가능하기 때문에 방향이라는 개념이 없지만, 객체 지향에서는 다른 객체에서 또 다른 객체를 조회하기 위해서 조회하고자 하는 객체의 정보를 가지고 있지 않으면 조회가 불가능하기 때문에 조회를 하기 위해서 방향을 설정해주는 것이 중요하다.  단방향 : 객체들이 연관관계를 맺을 때, 한쪽에서만 참조 가능한 경우 양방향 : 객체들이 연관관계를 맺을 때, 양쪽에서 참조 가능한..

FrameWork/Spring
RestTemplate

오늘은 ResetTemplate에 대해서 알아보고자 한다.   RestTemplateRestTemplate은 Spring Framework에서 Restful HTTP 요청을 위해 제공하는 클래스이다. 주로 아래와 같은 상황때 사용한다. Spring Boot 애플리케이션이 외부 RESTful API와 상호작용해야 할 경우다양한 목적으로 다른 웹 서비스의 데이터를 가져와야할 경우복잡한 구성없이 HTTP 클라이언트를 구축하는 간단한 효율적인 방법을 원하는 경우 작동은 다음과 같이 진행된다. 1. 어플리케이션이 RestTemplate을 생성하고, URI, HTTP 메소드 등을 헤더를 담아 요청한다.2. RestTemplate는 HttpMessageConverter을 사용하여 requestEntity를 요청 메세..

Programing Language/Java
Enum

최근 프로젝트를 진행하다가 "이건 Enum으로 빼서 처리하면 좋을 것 같은데요?"라는 조언을 들었다. Enum을 자바 공부하면서 들어보긴 했는데 어떠한 점이 좋은지, 어떻게 쓰면 되는지에 대해서는 명확하게 잘 알지는 못하기에 오늘은 Java의 Enum에 대해서 알아보고자 한다.   EnumEnum은 Enumeration의 약자로 열거, 목록의 뜻을 가지고 있으며 "상수의 데이터 집합"이라고 생각하면 된다. 일반적으로 상수를 정의하는 방법은 여러 가지가 존재하는데 이는 다음과 같다.  final 상수변수를 final 제어자를 이용해 변수를 상수화 한다. 동시에 static을 사용하여 메모리에 한 번만 할당 되게 설정한다는 장점을 가지지만 접근 제어자들 때문에 가독성이 좋지 못하다는 단점이 있다. priva..

FrameWork/Spring
ComponentScan

오늘은 컴포넌트 스캔에 대해서 알아보도록 한다.   @ComponentScan컴포넌트 스캔이란 스프링이 @Configuration 에너테이션이 붙은 설정 클래스를 찾은 뒤, 빈을 등록하는 과정에서 @Component 에너테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록해 주는 것을 의미한다.  AutoAppConfig.javaimport org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;import static org.springframework.con..

FrameWork/Spring
싱글톤 패턴과 컨테이너

오늘은 싱글톤 패턴과 스프링 컨테이너의 상관관계에 대해서 알아보고자 한다.   싱글톤 패턴디자인패턴 중 하나로, 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴을 의미한다. 아래는 싱글톤 패턴을 구현하는 방법을 코드로 작성한 모습이다.  SingletonPatterns.javapublic class SingletonPatterns { // 1. static 영역에 객체를 딱 1개만 생성한다. private static final SingletonPatterns instance = new SingletonPatterns(); // 2. public으로 열어 객체 인스턴스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용한다. public static ..

FrameWork/Spring
컨테이너에 빈 등록 및 조회

오늘은 스프링 컨테이너에 빈 등록, 조회를 하는 방법에 대해 알아보자. 컨테이너에 빈 등록하기스프링 컨테이너에 빈을 등록하는 방법은 2가지가 있다. @Bean을 통해 직접 등록하는 방법@Configurationpublic class AppConfig { @Bean public MemberRepository memberRepository(){ return new MemoryMemberRepository(); }} @Configuration 구성 정보에 @Bean 어노테이션을 통해 스프링 컨테이너에 직접 빈을 등록할 수 있다. 빈 객체로 등록하고 싶은 메서드 위에 @Bean 어노테이션을 추가해 사용한다.  @ComponentScan을 이용하여 자동으로 빈 등록하는 방법@Confi..

FrameWork/Spring
IoC, DI 컨테이너

오늘은 IoC, DI 컨테이너에 대해서 알아보고자 한다.  IoC, DI 컨테이너를 보기 전, 객체지향부터 확인하기일단 IoC, DI 컨테이너를 보기 전 좋은 객체 지향 설계의 5가지 원칙에 대해 보는 것이 살펴보고 가자.  디자인 패턴과 SOLID 원칙최근 객체 지향 프로그래밍을 자주 하게 되면서 해당 로직이 어떻게 더 깔끔하게 작성할지, 또는 코드의 유지보수성이 잘 되었으면 하는 생각에 여러 주제를 찾아보다가 디자인 패턴을 접하jheaon.tistory.com 객체지향으로 코드를 작성하기 위해서는 다음과 같은 규칙을 따르는 것이 좋다. 역할과 구현을 분리한다.클라이언트는 역할(인터페이스만 알면 된다)클라이언트는 내부 구조와 구조의 변경이 일어나도 영향을 받지 않는다. 클라이언트는 구현 대상 자체를 변..

Programing Language/Java
Optional

오늘은 Optional에 대해서 알아보자 OptionalJava8에서 나온 문법으로 NullPointerException(NPE)을 방지하도록 도와주는 클래스이다. Optional 을 이용하여 사용할 수 있으며 null이 올 수 있는 값을 감싸는 Wrapper 클래스로 나타낸다. 아래 코드와 같이 값을 저장하기 때문에, 참조하더라도 NPE가 발생하지 않도록 도와준다.public final class Optional { // If non-null, the value; if null, indicates no value is present private final T value; ...}  사용방법Optional.empty() : 값이 null인 경우Optional은 Wrapper 클래스이기 때문에..

Computer Theory/Web
도메인과 DNS 그리고 DNS의 작동원리

이번에는 DNS와 그 작동원리에 대해서 알아보고자 한다.   도메인 (Domain)도메인이란 인터넷에 연결된 컴퓨터를 사람이 쉽게 기억하고 입력 할 수 있도록 영문, 한글로 만든 인터넷 주소를 의미한다. 인터넷에 연결된 모든 컴퓨터는 IPv4 또는 IPv6 중 하나인 공용 IP 주소를 통해 접근할 수 있다. (예 : 127.0.0.1) 하지만 이런 주소는 컴퓨터가 쉽게 처리할 수 있으나 사람들은 해당 서버를 들어가기 위해서 IP주소를 일일이 기억하기 어렵다. 따라서 우리는 이런 IP 주소에 이름을 붙여 사람이 읽을 수 있도록 하는 주소인 도메인 주소를 사용하고자 하였다.  도메인 이름의 구조도메인 이름은 점으로 구분되고 오른쪽에서 왼쪽으로 읽히는 여러 부분으로 구성된 구조를 가지고 있다.  각 부부은 전..