모르지 않다는 것은 아는것과 다르다.

전체 글 224

github 정리

git config --global git config 뒤에 global이 붙는 이유는 "앞으로 이 컴퓨터에서 깃으로 관리하는 모든 프로젝트는 global하게 즉 모두다 이 유저네임으로 할것이다." 라는 뜻이다. git config --global --list 전역 설정 정보 조회 git init 비유 : 사진찍을 사진사를 고용 프로젝트당 초기에 1번만 설정 .git 파일이 생성된다. 참고 : clone을 받으면 --> .git파일까지 생성된다. git add . 비유 : 찍은 사진찍을 사람들을 모으는작업 작업마다 모아줘야댐 . save point를 복사해서 git reset --hard [save point] 명령어 실해해 주면 된다. .gitignore 반영하고 싶지 않은 파일들을 설정할 수 있다. ..

Git 2022.02.27

Vue.js

개발환경 세팅 vue cli를 통한 세팅 default 옵션으로 생성하기 Manually select features 옵션으로 생성하기 vue 프로젝트 매니저로 생성하기 설치된 프로젝트 구조 node_modules : npm으로 설치된 패키지 파일들이 모여있는 디랙토리 public : 웹팩을 통해 관리되지 않는 정적 리소스가 모여 있는 디렉토리 src/components : Vue 컴포넌트 파일이 모여 있는 디렉토리 App.vue : 최상위 컴포넌트 main.js : 가장 먼저 실행되는 자바스크립트 파일로써, Vue 인스턴스를 생성하는 역할 담당 gitignore : 깃허브에 업로드할 때, 제외할 파일 설정 babel.config.js : 바벨 설정 파일 package-lock.json : 설치된 pac..

Front-End 2022.02.27

필터와 인터셉터

필터 필터는 서블릿이 지원하는 수문장과 같다. 공통 관심사를 처리하기 위함이다. 로그인 페이지를 제외한 모든 페이지는 로그인한 사용자만 볼 수 있다. 요청마다 로그인 여부를 체크하는건 굉장히 번거롭고, 변경시 수정사항이 많다. 이러한 경우에 필터를 이용할 수 있다. 필터의 흐름 여기서 말하는 서블릿은 스프링의 디스패처 서블릿으로 생각하면 된다. HTTP 요청 ->WAS-> 필터 -> 서블릿 -> 컨트롤러 필터 제한 필터에서 적절하지 않은 요청이라고 판단하면 거기에서 끝을 낼 수도 있다. -> 로그인 여부를 체크하기에 딱 좋다. HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 //로그인 사용자 HTTP 요청 -> WAS -> 필터(적절하지 않은 요청이라 판단, 서블릿 호출X) //비 로그인..

Spring 2022.02.27

파일 업로드

2가지 폼방식 HTML Form을 통한 파일 업로드를 이해하려면 폼을 전송하는 2가지 방법을 알아야한다. application/x-www-form-urlencoded HTML 폼 데이터를 서버로 전송하는 가장 기본적인 방법이다. Form 태그에 별도의 enctype 옵션이 없으면 웹 브라우저는 요청 HTTP 메시지의 헤더에 Content-Type: application/x-www-form-urlencoded 를 추가해 주면 된다. 폼에 입력한 전송할 항목을 HTTP Body에 문자로 username=kim&age=20 와 같이 & 로 구분해서 전송한다. multipart/form-data 파일은 문자가 아니라 바이너리 데이터를 전송해야 하기 때문에 application/x-www-form-urlencod..

Spring 2022.02.27

쿠키와 세션을 사용한 로그인 처리

쿠키 쿠키에는 영속 쿠키와 세션 쿠키가 있다. 영속 쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지 세션 쿠키 : 만료 날짜를 생략하면 브라우져 종료시 까지만 유지 쿠키생성 로직 Cookie idCookie = new Cookie("memberId", String.valueOf(loginMember.getId())); response.addCookie(idCookie); 로그인에 성공하면 쿠키를 생성하고 HttpServletResponse 에 담는다. 쿠키 이름은 memberId 이고, 값은 회원의 id를담아둔다. 웹브라우저는종료전까지회원의 id를서버에계속보내줄것이다. request header 를 보면 Cookie: memberId=1 이 있는 것을 확인할 수 있다. Application -> Sto..

Spring 2022.02.26

컴포넌트스캔

컴포넌트 스캔 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. @Configuration @ComponentScan( excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class AutoAppConfig { } 컴포넌트 스캔을 사용하려면 먼저 @ComponentScan 을 설정 정보에 붙여주면 된다. 컴포넌트 스캔을 사용하면 @Configuration 이 붙은 설정 정보도 자동으로 등록되기 때문에, AppConfig, TestConfig 등 앞서 만들어두었던 설정 정보도 함께 등록되고, 실행되어 버린다. excludeFilters 를 이용해..

Spring 2022.02.26

커스텀 Validator 구현

커스텀 Validator 구현 개요 보통 나는 필드는 @Valid 를 사용해서 validation 을 처리했고, 메소드의 파라미터는 @Validated 를 통해서 진행했다. 하지만 메소드 내에서 validation 을 처리하고 싶었다. 그렇기 때문에 메소드 내에서도 validation 을 할 수 있게 커스텀 Validator 를 구현해볼 생각이다. 방법1. Spring Validator 인터페이스 구현하기 스프링 프레임워크 4.0은 빈 검증기 1.0(JSR-303) 와 1.1(JSR-349)를 지원하며 Spring의 Validator 인터페이스에 적용할 수 있다. package org.springframework.validation; public interface Validator { boolean su..

Spring 2022.02.26

의존관계 주입

의존관계 주입 방법 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 생성자를 통해서 의존 관계를 주입 받는 방법이다. 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { t..

Spring 2022.02.26

스프링 IoC 와 애플리케이션 컨텍스트 (토비의 스프링 1장)

IoC 객체가 사용할 객체를 스스로 선택하거나 생성하지 않는다. 객체 자신도 어떻게 만들어지고 어디서 사용되는지 알 수 없다. 모든 제어권을 다른 대상에게 위임한다. 스프링의 IoC 빈 Spring Container가 제어권을 가지고 직접 생성하고 관계를 부여하는 대상이 되는 객체를 말한다. 빈 팩토리 Bean을 생성하고 관계를 설정하는 IoC 객체이다. Bean을 등록하고 생성하고 반환하고 관리한다. 보통 Bean Factory 를 확장한 애플리케이션 컨텍스트를 사용한다. 애플리케이션 컨텍스트 Bean Factory 를 상속하여 확장한 것으로 IoC 방식을 따라 만들어진 일종의 Bean Factory 이다. Bean Factory 가 빈을 제어하는 IoC 기본 기능에 초점을 맞춘것이라면, 애플리케이션 ..

Books 2022.02.26

싱글톤 컨테이너

웹 애플리케이션과 싱글톤 스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 물론 웹이 아닌 애플리케이션 개발도 얼마든지 개발할 수 있다. 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); //1. 조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회: 호출할 때 마다 객체를 생성 MemberSer..

Spring 2022.02.26