본문 바로가기

Study59

[Spring] 애플리케이션 컨텍스트 애플리케이션 컨텍스트 오브젝트 팩토리(직접 설정 정보를 넣어주는 것, DaoFactory)에 대응하는 것이 스프링의 애플리케이션 컨텍스트예요. 스프링에서는 이 애플리케이션 컨텍스트를 IoC컨테이너라 하기도 하고, 간단히 스프링 컨테이너라고 부르기도 해요. 또는 빈 팩토리라고 부르기도 해요. ApplicationContext는 빈 팩토리가 구현하는 BeanFactory 인터페이스를 상속했으므로, 같이 봐도 괜찮아요. 특정 클래스를 설정정보를 등록하고, @Bean이 붙은 메소드의 이름을 가져와 빈 목록을 만들어줘요. 애플리케이션 컨텍스트의 getBean() 메소드를 호출하면 자신의 빈 목록에서 요청한 이름이 있는지 찾고, 있다면 빈을 생성하는 메소드를 호출해서 오브젝트를 생성시킨 후 클라이언트에게 돌려줘요... 2021. 5. 13.
[SpringBoot] @SpringBootApplication @SpringBootConfiguration, @EnableAutoConfiguration 스프링 부트를 의존성에 추가하면 (implementation 'org.springframework.boot:spring-boot-starter-web') 아래와 같이 @SpringBootApplication 애노테이션이 붙어있는 메인 클래스를 확인할 수 있어요. @SpringBootApplication public class SpringBootApplication { public static void main(String[] args) { SpringApplication.run(SpringBootApplication.class, args); } } 메인 클래스 부분에서 코드를 수정하는 부분은 거의없지만, 서비스의 시작이라는 관점에서 굉장히 중요한 부분이라 생각해요. @SpringBootAp.. 2021. 5. 10.
[SpringBoot] HttpSession 대신 HandlerMethodArgumentResolver 사용하기 HandlerMethodArgumentResolver란? HandlerMethodArgumentResolver는 사용자 요청이 Controller에 도달하기 전에 그 요청에 포함된 파라미터들을 수정할 수 있게 해주는 역할을 해요. Controller에서 @RequestBody 어노테이션을 사용해 Request의 Body 값을 받아올 때, @PathVariable 어노테이션을 사용해 Request의 Path Parameter 값을 받아올 때 이 HandlerMethodArgumentResolver를 사용해서 값을 받아온다고 해요. 1. HttpSession을 @LoginUser로 변경하기 @PostMapping public ResponseEntity saveChess(@RequestBody final Ch.. 2021. 5. 3.
[AWS] Ubuntu Docker 설치 이전에 깔려있을 docker삭제 $ sudo apt-get remove docker docker-engine docker.io containerd runc 설치에 필요한 파일들 설치 $ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release 도커 패키지 다운 $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg $ echo \ "deb [arch=amd64 signed-by=/usr/sh.. 2021. 5. 2.
[AWS] EC2의 스토리지 용량 재부팅 없이 늘리기 [AWS] EC2의 스토리지 용량 재부팅 없이 늘리기 크게 2가지의 일을 해야해요. 웹페이지의 AWS console에서 수정, EC2 인스턴스에서 수정. 명령어를 통해 차근차근 알아가 보도록 해요. AWS console에서 수정 Aws 로그인 후 EC2 -> Elastic Block Store -> Volumes로 이동해요. 크기를 수정할 볼륨을 클릭 후 Actions → Modify Volume를 선택해요. 팝업에서, 크기를 선택해요. 그리고 수정을 눌러요. EC2 인스턴스에서 수정( 파티션 크기 조정 ) 1.기기에 연결된 블록 장치들을 나열해요 $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 55.5M 1 loop /snap/core18/19.. 2021. 5. 1.
[Network] DDos공격에 대응하는 법 먼저 Dos와 다른점을 살펴볼 필요가있어요 Dos(Denial of Service) Dos공격은 서비스 거부 공격의 약자로, 인터넷에 연결된 호스트의 서비스를 악의적으로 공격해 해당 시스템의 리소스를 부족하게 하여 사용자가 시스템 또는 네트워크 리소스를 사용할 수 없도록 만드는 사이버 공격이에요. 즉, 특정 서버에게 수많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스 이용을 하지 못하게 하거나, 서버의 TCP 연결을 바닥내는 등의 공격이 이 범위에 포함돼요. DDos(Distributed DoS) 분산 서비스 거부 공격으로. 여러 대의 공격자를 분산적으로 배치해 동시에 서비스 거부 공격을 하는 방법이에요. 차이점 Dos는 공격자 PC에서 희생자 서버에게 바로 악의성 패킷을 보내요. 희생자가 공격자.. 2021. 5. 1.
[Java] Call by value? 자바에서는 모두 Call/Pass by value. 자바가 Call by Reference가 아니라는 사실에 적잖이 충격이었던 경험이 있어요. 제게 Call by Value라고 확신을 하게 해줬던 문서들을 첨부해요. 우선 래퍼런스의 끝판왕 oracle docs를 확인해볼게요 https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html 문서에서 프리미티브 타입의 인자 잔달에 대해 확인해볼 수 있어요. "Passing Primitive Data Type Arguments" int와 double와 같은 프리미티브 타입은 메서드 인자(argument)에 값으로 전달된다고 해요.(이는 call-by-value, pass-by-value로 불려요) 전달될 .. 2021. 4. 28.
[Database] Inner Join vs Outer Join 조인(Join)이란 2개 이상의 테이블을 서로 엮어 조회하는 것이에요. Inner Join은 서로 매칭되는 (둘다 null이 아닌)것만 엮어서 조회해요. Outer Join은 매칭 뿐만 아니라 매칭되지 않는 데이터도 조회해요 (베이스 테이블의 컬럼에 해당하는 값이 없어도 null 로 불러옴) 이해가 쉽게 되지 않으니 예제와 그림을 통해 설명할게요 실습 데이터 CREATE TABLE IF NOT EXISTS team ( team_id VARCHAR (36) NOT NULL, name VARCHAR (64) NOT NULL, PRIMARY KEY (team_id) ); CREATE TABLE IF NOT EXISTS member ( member_id VARCHAR(36) NOT NULL, name VARCH.. 2021. 4. 26.
[Network] http의 특징과 각각에 대해 간략히 설명해 주세요 우선 개념에 대해 알아볼 필요가 있어요. HTTP란? HTTP Hyper Text Transfer Protocol의 약자로, 인터넷 프로토콜 스택의 4걔층 중 애플리케이션 계층의 프로토콜이에요. 인터넷 프로토콜 스택이라는 말과, 프로토콜이라는 말을 더 정확히 들어가보죠. Protocol 컴퓨터 사이에 원활한 데이터 통신을 하기 위해 필요한 통신 규약이에요. 이때, 하나의 프로토콜의 설계로 데이터 송수신의 문제를 해결 될 수 없기에 프로토콜 스택은 아래와 같이 4가지의 영역별로 세분화 돼요. 인터넷 프로토콜 스택 4계층 그러고 이러한 계층들의 과정을 도식화 해보면 아래와 같아요. 하나씩 생겨난 이유에 대해 다뤄볼 거에요. 네트워크 인터페이스 계층 집에 컴퓨터가 두대가 있어요. 저는 두대의 컴퓨터를 연결해서.. 2021. 4. 23.