[에스넷시스템 부트캠프] TIL Day1 - VMware Workstation 설치하기
·
TIL
1. VMware Workstation흔히 말하는 VMware는 가상화 및 클라우드 인프라 솔루션을 전문으로 하는 기업을 말한다. 우리가 실습에서 사용하는 가상화 소프트웨어는 정확하게 말하면 VMware Workstation이다. 교육 OT 커리큘럼에서 잠깐 봤던 VMware vSphere와 VMware Horizon은 기업용 제품으로 실무에서 사용되는 제품인 것 같다. 2. 가상화란?가상화는 마치 '컴퓨터 안에 컴퓨터를 하나 더 설치하는 것'과 같은 개념이다. 물리적으로 존재하는 컴퓨터의 CPU, 메모리, 네트워크, 스토리지 등의 자원을 소프트웨어적으로 분리하고 여러 개의 가상 머신(VM)에서 각각의 가상 자원처럼 나누어 사용하는 기술을 말한다. 수업에서는 VMware Workstation을 이용해 ..
[에스넷시스템 부트캠프] TIL Day0 - 부트캠프 신청과 합격까지
·
TIL
💡에스넷 부트캠프를 알게 된 계기수많은 서류 탈락과 간신히 보게 된 면접에서도 탈락하다보니 나도 모르게 나태해졌다... 이 나약한 정신머리를 고치고자 국비 교육을 찾아봤다. 몇개 검색하다보니 자연스럽게 인스타에 부트캠프 광고가 줄줄이 나왔고 그중에서 채용 연계와 클라우드라는 키워드를 가진 에스넷시스템 교육과정이 눈에 띄었다.이전에 백엔드 개발을 하면서 인프라도 구축하고 모니터링 환경도 구축해보면서 인프라 쪽에 관심이 생기긴 했다. 근데 백엔드도 아직 미숙했기에 나중에 나중에로 미루기 일쑤였다. 그래서 이번 기회에 인프라 공부를 해보고자 에스넷시스템 부트캠프에 지원하게 됐다!! ✔️ 에스넷 부트캠프의 장점💻 무려 비대면이다!! 교통비와 식비를 아낄 수 있다.국비라서 교육비 0원에 훈련장려금 약 31만원..
[공부/Spring] Spring AOP로 나만의 캐싱기능 구현하기
·
Develop/Spring
배경Redis를 이용해서 캐싱 기능을 구현하려고 한다. 스프링에서 캐싱을 위해 @Cacheable 이라는 어노테이션을 지원해주지만 단순히 메서드의 반환 값을 캐시하여 이후 동일한 인수로 호출될 때 캐시된 값을 반환만 해준다. @Cacheable은 복잡한 캐싱 전략을 사용하기 어렵고, Redis의 여러 기능들을 사용하려면 추가적인 설정이 필요하다. 일단 "나만의 캐싱 기능을 구현"하는 것이 목적이기 때문에 스프링에서 제공하는 @Cacheable를 사용하지 않고 기능을 구현하려고 한다. 나만의 캐싱 전략어떤 서비스냐에 따라 캐싱 전략 또한 변해야 한다. 아직 생각하고 있는 서비스는 없으므로, 가장 일반적인 읽기는 많고 그에 비해 쓰기는 비교적 적은 서비스를 위한 캐싱 전략을 생각해보고자 한다. 읽기 전략개인..
[공부/Spring] 구글 SMTP를 이용한 이메일 인증
·
Develop/Spring
운영체제 : MacOS M1 IDE : IntelliJ Spring Boot : 2.7.8 Java : 11 JDBC : MyBatis 계기 추후에 아이디나 비밀번호를 찾을 때 이메일을 이용하기 위해 회원가입시 이메일 인증 과정을 추가하고자 한다. 이메일 인증은 회원가입 뿐만 아니라 비밀번호 재설정시 본인임을 확인하기 위한 용도로도 사용할 예정이다. SMTP란? SMTP(Simple Mail Transfer Protocol)은 네트워크를 통해 전자우편(이메일)을 전송하는 기술 표준을 의미한다. 이메일 인증을 위해서 SMTP를 통해 원하는 계정으로 인증코드를 담은 이메일을 전송할 것이다. SMTP를 사용하기 위해 build.gradle에 아래 의존성을 추가해주자. implementation 'org.spr..
[공부/Spring] 유효성 검사를 위한 Validation 처리
·
Develop/Spring
운영체제 : MacOS M1 IDE : IntelliJ Spring Boot : 2.7.8 Java : 11 JDBC : MyBatis 계기 회원가입의 경우 아이디, 비밀번호, 이메일 등 그 값이 일정한 형식을 지켜야 한다. 이를 체크해주는 메소드를 하나 하나 생성해줄 수도 있겠지만 이전에 @NotNull, @Email 등 유효성 검사를 해주는 어노테이션을 본 적이 있어 해당 어노테이션들을 이용해 유효성을 검사하고자 한다.  @Valid란? @Valid는 JSR-303 표준 스펙으로써 빈 검증기(Bean Validator)를 이용해 객체의 제약 조건을 검증하도록 지시하는 어노테이션이다. 어노테이션으로 편리하게 검증을 해준다는 특징이 있다. Spring에서는 LocalValidationFactoryBea..
[공부/Spring] @ExceptionHandler 예외처리
·
Develop/Spring
운영체제 : MacOS M1 IDE : IntelliJ Spring Boot : 2.7.8 Java : 11 Persistence Framework : MyBatis 계기 회원가입을 구현하면서 성공을 제외하고 이메일 형식을 틀리거나, 이미 존재하는 아이디 등을 처리해줄 때 각 상황에 맞는 상태코드와 응답 Body에 넣어줄 메시지를 설정해주고 싶었다. 처음엔 서비스층에서 회원가입을 수행하다가 문제가 발생하면 그 문제를 컨트롤러에 전해주고, 컨트롤러에서는 문제가 무엇인지 판단하고 그에 맞는 상태코드와 응답 메시지를 만들려고 했다. 하지만 이 방법으로 구현하면 컨트롤러의 코드가 많이 지저분해지기도 하고, 서비스에서 어떤 문제인지를 판단을 한 상태이기 때문에 컨트롤러에서 또 그 문제에 맞는 상태코드와 응답 메시..
[도서/스프링 입문] #7 스프링 삼각형과 설정 정보
·
Book/스프링 입문을 위한 자바 객체 지향의 원리와 이해
✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. IoC/DI - 제어의 역전/의존성 주입 프로그래밍에서 의존성이란? A가 B를 의존한다는 건 의존대상B가 변하면 A에 영향을 미친다는 의미이다. 결론적으로 전체가 부분에 의존한다고 할 수 있다. 더 깊이 들어가면 전체와 부분인 객체 사이에 집합 관계(Aggregation)와 구성 관계(Composition)로 구분할 수 있다. 집합 관계 : 부분이 전체와 다른 생명 주기를 가질 수 있다. ex) 집과 냉장고 구성 관계 : 부분이 전체와 같은 생명 주기를 가진다. ex) 사람과 심장 앞으로 들 예시 Dirver : 운전자 클래스 Car : 자동차 클래스 Tire : 타이어 인터페이스 KoreaT..
[도서/스프링 입문] #6 스프링이 사랑한 디자인 패턴
·
Book/스프링 입문을 위한 자바 객체 지향의 원리와 이해
✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. 스프링 프레임워크를 설명하는 공식적인 정의는 "자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크"이다. 각기 다른 소프트웨어 모듈이나 기능을 가진 다양한 응용 소프트웨어 시스템들을 개발할 때 서로 간에 공통되는 설계 문제가 존재하며 이를 처리하는 해결 사이에도 공통점이 있는데 이러한 유사점을 패턴이라 한다. 디자인 패턴은 23개로 나뉘는데 크게 생성(Creational), 구조(structural), 행위(Behavioral) 3가지로 분류된다. 이를 GoF(Gang of Four) 디자인 패턴이라 부른다. 각 분류 별 패턴 더보기 생성 패턴 : 객체 생성에 관련된..
[도서/스프링 입문] #5 객체 지향 설계 5원칙 - SOLID
·
Book/스프링 입문을 위한 자바 객체 지향의 원리와 이해
✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. 객체 지향 설계 5원칙 SOLID는 응집도는 높이고(High Cohesion), 결합도는 낮추라(Low Coupling)는 고전 원칙을 객체 지향의 관점에서 재정립한 것으로 유지보수성을 극대화해주는 원칙이다. 응집도 : 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로, 응집도가 높은 모듈은 하나의 책임에 집중하고, 독립성이 높아져 재사용이나 기능의 수정, 유지보수가 용이 응집도가 높으면 변경 대상과 범위가 명확해짐 결합도 : 모듈간의 상호 의존 정도로서 결합도가 낮으면 모듈 간의 상호 의존성이 줄어들어 객체의 재사용성이나 수정, 유지보수가 용이 결합도가 낮으면 검토해야 되는 소스의..
[도서/스프링 입문] #4 자바가 확장한 객체 지향
·
Book/스프링 입문을 위한 자바 객체 지향의 원리와 이해
✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. abstract 키워드 - 추상 메소드와 추상 클래스 추상 메소드는 선언부는 있는데 구현부가 없는 메소드를 의미하고, 추상 메소드를 하나라도 갖고 있는 클래스는 반드시 추상 클래스로 선언해야 한다. 추상 클래스는 인스턴스를 만들 수 없고, 하위 클래스에게 메소드 오버라이딩을 강제한다. 생성자 생성자를 따로 만들어주지 않으면 자바에서 인자가 없는 기본 생성자를 자동으로 만들어 준다. 인자가 있는 생성자를 하나라도 만든다면 자바는 기본 생성자를 만들어 주지 않는다. 클래스 생성 시의 실행 블록, static 블록 static 블록은 클래스가 스태틱 영역에 배치될 때 실행되는 코드 블록으로 한번만 ..